在比较 a[j]=42 时,我收到消息"cannot from convert int to boolean"



我有一小段代码。当我比较数组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'

正如其他答案所示,您需要==进行比较。

相关内容

最新更新