【问题标题】:NullPointerException error with objects in array数组中的对象出现 NullPointerException 错误
【发布时间】:2017-04-23 20:34:54
【问题描述】:

我是 java 新手,编译器出现这个错误

输入名称:线程“main”中的pot异常 java.lang.NullPointerException 在 account.BankTest.main(BankTest.java:17) C:\Users\Carl INVOKER\AppData\Local\NetBeans\Cache\8.2\executor-sn-ps\run.xml:53: Java 返回:1 BUILD FAILED(总时间:7 秒)

班级帐号

package account;

public class Account {
    private String name;
    private String surname;
    private int age;
    private int sex;

    public Account(String name, String surname, int age, int sex) {
        this.name = name;
        this.surname = surname;
        this.age = age;
        this.sex = sex;
    }

    public Account() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;

    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;

    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }
}

类银行测试

package account;

import java.util.Scanner;

public class BankTest {

    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);

        Account user[] = new Account[10];

        System.out.println("Enter name : ");
        user[1].setName(scan.nextLine());

        System.out.println(user[1].getName());
    }
}

【问题讨论】:

  • 这个话题解决了吗?如果您标记了已解决的问题,它将对其他用户和我自己有很大帮助。如果您找到了更好的解决方案,请与社区分享。
  • 我没有使用对象数组,我使用 ArrayLists。您建议的代码无效。
  • 这是一个对象数组Account user[] = new Account[10];,而不是一个ArrayList。 ArrayList 会是这样的 List<Account> user = new ArrayList<Account>();
  • 无论哪种方式,只要这样做就可以证明您没有初始化数组的元素。在您的扫描仪读取nextLine 之前将System.out.println(user); 放入您的代码中,您会看到您有一个空数组。

标签: arrays object nullpointerexception


【解决方案1】:

您的数组中没有值。 Account user[] = new Account[10]; 只创建数组,但不初始化数组中的元素。因此,当你执行user[1].setName(scan.nextLine());这个语句时,user[1]并没有引用Account对象,它实际上引用了一个null值;因此,调用方法setName 将抛出NullPointerException。要初始化您的帐户数组,您需要在访问它之前执行类似的操作。

for (int i=0: i<user.length; i++) {
    user[i] = new Account(null, null, 0, 0);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    相关资源
    最近更新 更多