为什么我不能检查数组中的某个位置是否为空? 我收到了错误的信息:
对于参数类型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;
}
答案 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
进行比较