Java对象数组能否初始化元素为非空值?

5

我对Java还比较新手,我很难弄清楚如何修复一直困扰我的空指针异常。

我知道问题出在哪里,也知道什么是空指针异常,但我不知道该如何让我的程序正常工作。

这里是问题发生的代码片段:

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

    Account[] atm = new Account[10];

    for (int i = 0; i < 10; i++){
        atm[i].setId(i);
        atm[i].setBalance(100.00);
    }

就像我说的那样,我知道发生这种情况是因为atm[]中的对象为空,但我不确定如何解决这个问题。

我相信这是一些比较愚蠢的错误,因为这些错误我经常犯,但如果你们能够给我帮助,那真是帮了我的大忙了。

谢谢!

1个回答

9

你的整个数组都是null!请记住,在Java中,除非它们是int、float、double或boolean数组,否则数组不会自动初始化。

Scanner input = new Scanner//System.in.Scanner;

Account[] atm = new Account[10];

for (int i = 0; i < 10; i++){
    **atm[i] = new Account();**
    atm[i].setId(i);
    atm[i].setBalance(100.00);
}

当您在声明存储对象的数组时,请将其理解为“我要创建一个数组,用于保存'x'个对象。”(正确),然后继续实例化这些对象。
与之相反的是,“我正在创建一个包含'x'个对象的数组。”(不正确),因为其中还没有任何对象,因为它们尚未被创建。

2
或者,也许更好的思考方式是:在Java中,数组始终是默认初始化的,并且初始化程序始终相当于0填充:0、0.0、falsenull等。 - Ernest Friedman-Hill
非常感谢!这是我第一次练习使用Java数组,我完全不知道那个小技巧!我不会让它再发生的 =) - KAM1KAZEKOALA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接