是否可以在" if()"中包含=符号?

时间:2015-02-06 00:52:51

标签: java if-statement

我写了一行来增加总值

int totalValue = value1 + value2 + value3;

现在我想使用if语句来编写if (totalValue = 200);,但是它给出了一个错误说"无法从int转换为布尔类型"。

我应该怎么做因为我希望使用else if(); System.out.println();

获得四种可能的结果

6 个答案:

答案 0 :(得分:8)

if (totalValue == 200)

=用于分配值,==用于比较值。

答案 1 :(得分:1)

Java中的=运算符只进行赋值;您想将totalValue与200进行比较,因此您应该使用==比较运算符。

if(totalValue = 200){
    ...
}

请注意,在if语句后不应该有分号,因为Java基本上会忽略if

答案 2 :(得分:1)

=符号是赋值运算符。

执行if(totalValue = 200)实际上会为totalValue分配200。

您需要的是==运算符

if(totalValue == 200)
{
System.out.println("200");
}
else if (totalValue == 100)
{
System.out.println("100");
} //...

将行终止符放在if的末尾(totalValue == 200); 将终止条件陈述。这意味着它下面的语句不仅会在条件计算结果为true时执行。

另外,我发现总是将{}放在if()之后,即使只有一个语句来防止作用域出现问题也是一种好习惯。这是一个显示如何发生(并阻止)https://stackoverflow.com/questions/21999473/apples-goto-fail-security-bug

的链接

答案 3 :(得分:0)

如果你写if(totalValue = 19),它将评估你是否可以成功地将19分配给totalValue。

成功与否,在Java中是一个布尔值,所以它期望评估一个布尔值。 表达式:

if((totalValue = 19) == True){ ... }
在这种情况下,

是正确的但也是无用的,因为它几乎可以肯定地成功分配值

如果您只想检查值,则必须使用==

答案 4 :(得分:0)

是的,但平等为==,作业为=。另外,请勿以分号结束if语句,也不要终止if的正文。

// if (totalValue = 200);
if (totalValue == 200) {
    // Do stuff for when the value is 200
} else {
    // Do stuff when the value is not 200
}

答案 5 :(得分:0)

与其他人说的一样,Java中的'='运算符用于赋值。但是(可能有点偏离主题),赋值本身会计算为赋值,可以在布尔表达式中重用。

这可以像在这个循环中一样使用,其中readLine的结果被存储并在单个表达式中与null进行比较:

int value;
while ((value = reader.read()) != -1) {
    doSomething(value);          
}
相关问题