Java 检查数组中的空元素时出错
为什么我不能检查数组中的位置是否为空? 我得到了一个错误的信息: 参数类型int,null的运算符==未定义 在标记线上Java 检查数组中的空元素时出错,java,arrays,Java,Arrays,为什么我不能检查数组中的位置是否为空? 我得到了一个错误的信息: 参数类型int,null的运算符==未定义 在标记线上 私有静态int findNr(int[]trans) { int-emptyPlace=0; 对于(int i=0;i如果(trans[i]=null)您必须执行以下操作 if( trans[i] == null) 而不是 if( trans[i] = null) ^-----------Mistake 无论如何,您是用哪种语言编写代码的?您无
私有静态int findNr(int[]trans)
{
int-emptyPlace=0;
对于(int i=0;i如果(trans[i]=null)您必须执行以下操作
if( trans[i] == null)
而不是
if( trans[i] = null)
^-----------Mistake
无论如何,您是用哪种语言编写代码的?您无法比较null
int
的基元数据类型是基元数据类型。您尝试将null分配给位置i处的数组元素
要检查元素是否为null,必须执行以下操作:
if(trans[i] == null)
{
...
}
但是这个表达式没有任何意义,因为int永远不能为null(除非它是可为null的int(int?),所以条件将始终为false原语不能用null进行检查。因此对于特定的原语类型,使用它们的默认值进行检查
i、 对于int
而言,默认值为0
,对于
double
默认值为0.0
等
因此,检查如下:
if(intr[i]==0){
//some logic
}
if(trans[i]=null)
在上一行中,您使用赋值运算符=
代替比较运算符=
。如果条件要求计算后的最终值为布尔值类型,则会出现错误。
另外,您的trans[i]
是一个基本int
值,不能与null
进行比较(在java中,只有对象可以是null
)
赋值运算符=
仅适用于布尔变量,如下所示:
boolean flag = false;
if(flag=true) {
// this condition will be true
}
首先,您错发了=
比较。应该是:
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]);
您应该使用Integer
objects数组或查看逻辑。1-您忘记了'='-->if(trans[i]==null)
2-无法比较基元值(int)使用null你能解释一下整数数组中的空位是什么意思吗?回滚对标记的修改,因为这也肯定不是C。C
,java
和C
标记?@Steve我有一个数组,但它不是满的,我想检查数组中的哪些位置是空的,没有任何值。好吗用另一种方法来做吗?我想检查一个空的位置。你有两种方法。a)你知道数组中会有什么值。然后你可以使用例如INT_MAX来表示空值并测试它b)你必须创建第二个数组(bool)并存储在那里标志,指示索引处的第一个数组是否为空
int[] v = new int[3];
for (int i = 0; i < v.length; i++)
System.out.println(v[i]);
0
0
0