当前位置: 首页 > 知识库问答 >
问题:

数组变量可能尚未初始化错误

袁翔
2023-03-14

我创建了包含构造函数和toString方法的类主管。但是,当我试图打印数组的索引时,出现了一个错误,“变量svArray可能尚未初始化。我该如何解决这个问题?”?

Supervisor[] svArray;
if (mainChoice == 3){
        String ID, name, department, resarch;
        System.out.println("Enter How Many Supervisor you want to enter : ");
        svNumber = input.nextInt();
        svArray = new Supervisor[svNumber];
        for (int i = 0; i < svNumber; i++) {
            System.out.println("---Enter Supervisor " + (i + 1) + " Of " + svNumber + " ---");
            System.out.println("Enter staff ID : ");
            ID = input.next();
            System.out.println("Enter name : ");
            name = input.next();
            System.out.println("Enter department : ");
            department = input.next();
            svArray[i]=new Supervisor(ID, name, department);\
        }


    }
System.out.print(svArray[1].toString)
//Error, variable svArray might not have been initialized

共有3个答案

柯曜文
2023-03-14

如果main Choice不等于3,则svArray永远不会初始化。您需要将print语句放入if块中,或者无条件地将svArray[1]初始化为某个值。

娄建义
2023-03-14

只需在if语句内部初始化数组,但在外部使用它即可。因此,如果if语句的内容从未运行过(即当mainChoice不是3时),则在未初始化的情况下在末尾使用数组。

佟嘉祯
2023-03-14

问题在于,在这条线上:

System.out.print(svArray[1].toString)

如果mainChoice!=3,因为您初始化了未执行的if语句中的数组。

要解决此问题,可以将数组初始化为null

Supervisor[] svArray = null;

然后检查null

if(svArray != null) System.out.print(svArray[1].toString());
 类似资料:
  • 问题内容: 我得到错误: TestCounter.java:115:变量计数器可能尚未初始化counters [i] = new Counter(i); 而且我不知道如何解决它。我知道我的课程“” 有效。下面是我的代码,如果您可以看一下,我将非常高兴。此代码包装在类的main方法中。 问题答案: 您尚未创建数组,只是声明了变量。 您需要这样做: 或类似的东西

  • 问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事

  • 问题内容: 当我尝试编译时: 我得到这些错误: 在我看来,我在方法的顶部初始化了它们。怎么了 问题答案: 你声明了它们,但没有初始化它们。初始化它们是将它们设置为等于一个值: 因为未初始化变量,但在循环中增加了变量(例如),因此会收到错误消息。 Java原语具有默认值,但如下一位用户所述 当声明为类成员时,它们的默认值为零。局部变量没有默认值

  • 所以我已经在结果中声明了相关字符串的值,但是它仍然说我的变量“result”可能还没有初始化。 我正在尝试实现与此类似的输出。任何人都可以帮我吗?谢谢!

  • 我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我

  • 我不知道这段代码有什么问题,也不知道为什么会出现错误: 变量isPrime可能尚未初始化 这是完整的代码: