java - 为什么不能在 while 循环中将 array[n] 与 null 进行比较?

标签 java arrays while-loop null comparison

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/

相关文章:

java - VB6 到 Java 转换器

java - Log4j 2 JSON 模式布局 + 记录 JSON 负载

java - 在 2D int 数组算法中收集重复值的索引

c++ 每 5 分钟调用一次函数

c# - 创建动态优惠券检查器

java - 尝试使用扫描器类循环函数

java - 如何在 `setOnItemClickListener(...` 内调用多个方法

java - IKVM - 无法将 jar 转换为 dll

c++ - 类使用初始化技巧创建对象

Java:自定义对象引用数组