检查数组中的空元素时出错

时间:2013-12-12 13:09:42

标签: java arrays

为什么我不能检查数组中的某个位置是否为空? 我收到了错误的信息:

  

对于参数类型int,null,运算符==未定义“   在标记的行

private static int findNr(int[] trans)
{
    int emptyPlace=0;
    for (int i=0; i<trans.Length -1;i++)
    {
        --> if( trans[i] = null) <--
           return emptyPlace = trans[i];            
    }
    return emptyPlace;
}

7 个答案:

答案 0 :(得分:6)

您无法比较null的原始数据类型。 int是原始数据类型。

答案 1 :(得分:1)

你必须做

if( trans[i] == null) 

而不是

if( trans[i] = null)
             ^-----------Mistake

无论如何,您使用哪种语言编写代码?

答案 2 :(得分:0)

您尝试将null赋给位置i的数组元素

要检查元素是否为null,您必须执行以下操作:

if(trans[i] == null)
{
    ...
}

但是这个表达式没有任何意义,因为int永远不能为null(除非它是一个可以为空的int(int?))所以条件总是为false

答案 3 :(得分:0)

无法使用 null 检查基元。因此,对于特定的原始类型,请使用其默认值进行检查。

int默认值为0且为            double默认值为0.0等。

请检查:

 if(intr[i]==0){
      //some logic
 }

答案 4 :(得分:0)

  

if(trans [i] = null)

在上面的行中,您使用赋值运算符=代替比较运算符==。如果condition期望计算后的最终值为boolean类型。因此你得到了错误。 此外,您的trans[i]是原始int值,无法与null进行比较。 (只有对象在java中可以是null

赋值运算符=仅适用于布尔变量,如下所示:

boolean flag = false;

if(flag=true) {
// this condition will be true
}

答案 5 :(得分:0)

首先,你错误地将==比较误解了。应该是:

if (trans[i] == null)

其次,上述方法无效。当您声明任何null变量时,原始值永远不会是int,默认情况下它为0。

这就是为什么:

int[] v = new int[3];

for (int i = 0; i < v.length; i++)
    System.out.println(v[i]);

输出:

0
0
0

您应该使用Integer个对象数组或查看您的逻辑。

答案 6 :(得分:0)

1-你忘了'='---&gt; if (trans[i] == null)

2-您无法将原始值(int)与null

进行比较