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

Java对象数组能否将元素初始化为非空值?,java,Java,我是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++){ a

我是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);
    }
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
账户[]atm=新账户[10];
对于(int i=0;i<10;i++){
atm[i].setId(i);
atm[i].setBalance(100.00);
}
正如我所说,我知道这是因为atm[]中的对象为null,但我不确定如何解决这个问题

我确信这是一个愚蠢的错误,因为这些都是我经常犯的错误,但你们能给我的任何帮助都会让我开心


谢谢!

您的整个数组都是空的!请记住,数组永远不会在java中自动初始化,除非它们是整数、浮点、双精度或布尔值数组

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);
}
扫描仪输入=新扫描仪//System.in.Scanner;
账户[]atm=新账户[10];
对于(int i=0;i<10;i++){
**atm[i]=新账户()**
atm[i].setId(i);
atm[i].setBalance(100.00);
}
当您声明包含对象的数组时,读作“我正在创建一个包含“x”对象的数组”(正确),然后继续实例化这些对象

…而不是


“我正在创建一个包含“x”对象的数组。”(不正确)因为还没有创建任何对象,所以其中还没有任何对象。

或者,也许是一个更好的想法:数组总是用Java进行默认初始化,初始化器总是相当于0-filling:0,0.0,
false
null
,等等。非常感谢!这是Java arr的第一次实践我曾经有过这样的日子,我完全没有意识到这一点!我不会让它再次发生=)