2015-02-06 95 views
-3

我写了一行总共加起来的总价值是否可以在“if()”中包含=号?

int totalValue = value1 + value2 + value3; 

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

我应该怎么做,因为我想用else if(); System.out.println();

+2

'='是一个赋值运算符,而不是比较运算符。 – lared 2015-02-06 00:54:04

+5

'if(totalValue == 200)'又如何去掉';'呢? – Reimeus 2015-02-06 00:54:13

+0

谢谢你们! – 2015-02-06 00:58:36

回答

8
if (totalValue == 200) 

=是分配值有四种可能的结果,==是比较值。

1

Java中的=运算符只能分配;你想比较totalValue到200,所以你应该使用==比较运算符。

if(totalValue = 200){ 
    ... 
} 

请注意,你不应该有一个if语句后一个分号,因为那么Java将基本忽略if

0

如果您编写if(totalValue = 19),它会评估您是否可以成功地将19赋给totalValue。

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

if((totalValue = 19) == True){ ... } 

是正确的,但也没用,在这种情况下,因为它几乎肯定成功赋值

如果你想只检查值必须使用==

+0

'true'在Java中拼写为小写字母t。 – 2015-02-06 01:26:24

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 
} 
0

像其他人说的那样,Java中的'='操作符用于分配值。然而(可能有点偏离主题),赋值本身的计算结果为赋值,可以在布尔表达式中重用。

这可以在这个循环中,其中的readLine的结果被存储,并与空在单个表达式中使用,如:

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

=符号是赋值运算符。

if(totalValue = 200)实际上将200分配给totalValue。

你需要的是==操作符

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

把线路终端在当年底(总价值== 200); 将终止条件语句。这意味着它下面的语句不仅会在条件评估为真时执行。

另外,我认为总是在if()之后放一个语句以防止问题出现在范围之内是一种很好的做法。这里有一个链接来展示如何发生(并阻止)https://stackoverflow.com/questions/21999473/apples-goto-fail-security-bug

相关问题