while (array[i] == null)
给出一个无法比较的类型错误。
我想做以下事情:
int i = 0;
int[] array = new int[50];
while (array[i] == null)
{
array[i] = console.nextInt();
i++;
}
最佳答案
你不能这样做的原因是你有一个基本类型数组。原始类型在 Java 中必须有一个值。这是因为它们是值,而不是对对象的引用。
像 Integer 这样的对象是对堆上一 block 内存的引用。不指向任何东西是有道理的,因此它可以为空。
在您的情况下 int[] array = int[50]
(如果它在语法上是正确的),永远不会有 null 元素。
你最好尝试这样的事情:
int[] array = new int[50];
for(int k = 0; k < 50; k++)
{
array[k] = console.nextInt();
}
它更加地道,任何阅读您的代码的人都会对您感到满意。
如果你尝试这样做,你会得到一个索引越界错误:
int i = 0;
Integer[] array = new Integer[50];
while (array[i] == null)
{
array[i] = console.nextInt();
i++;
}
所以试试这个:
Integer[] array = new Integer[50];
for(int i = 0; i < array.length; i++)
{
array[i] = console.nextInt();
}
如果控制台是一个扫描器,你应该使用:
int i = 0;
Integer[] array = new Integer[50];
while(console.hasNextInt() && i < 50)
{
array[++i] = console.nextInt();
}
关于java - 为什么不能在 while 循环中将 array[n] 与 null 进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289755/