我有一小段代码。当我比较数组a[j] != 42
时,它就像一个符咒。但如果我将其调整为a[j] = 42
,它会显示:
无法从"int"转换为"boolean"
我做错了什么?
for(int i = 0; i <= 9; i++) {
a[i] = Integer.parseInt(br.readLine());
int j = 0;
do {
if (a[j] = 42)
System.out.println(a[j]);
else {
flag=0;break;
}
j++;
} while (flag == 1);
}
a[j]!=42
是一个比较。a[j]=42
则是该值的赋值。
比较它们的正确方法是:a[j] == 42
由于其他答案已经提到a[j]=42
是一项作业。您希望它比较两个值。我想补充一点关于这里到底发生了什么的信息。
解释:您的代码所做的是将42分配给a[j]
。CCD_ 8将在该行之后包含/等于42。作业本身很好。
但是编译器期望在它的if (...)
中有一个布尔表达式来确定它应该进入下面的代码块还是else
分支中的一个。Java中的赋值运算符=
返回赋值。因此,语句a[j]=42
返回42,编译器希望从中获得布尔值,但由于它是cannot convert from int to boolean
,因此无法从中获得。
解决方案:改为使用==
运算符,该运算符不在处赋值,而是比较两个值,并返回一个boolean
(无论两者是否相同):if (a[j] == 42)
您必须使用==进行比较:如果(a[j]==42)
if(a[j]=42)
这相当于:
a[j] = 42
if(a[j]) {
}
现在,由于您将42
检查为布尔值,因此会得到错误:cannot covert from 'int' to 'boolean'
正如其他答案所示,您需要==
进行比较。