我写了一行总共加起来的总价值是否可以在“if()”中包含=号?
int totalValue = value1 + value2 + value3;
现在我想用一个if语句来写if (totalValue = 200);
但它给了我一个错误说“无法从一个int转换为布尔类型” 。
我应该怎么做,因为我想用else if(); System.out.println();
我写了一行总共加起来的总价值是否可以在“if()”中包含=号?
int totalValue = value1 + value2 + value3;
现在我想用一个if语句来写if (totalValue = 200);
但它给了我一个错误说“无法从一个int转换为布尔类型” 。
我应该怎么做,因为我想用else if(); System.out.println();
if (totalValue == 200)
=
是分配值有四种可能的结果,==
是比较值。
Java中的=
运算符只能分配;你想比较totalValue到200,所以你应该使用==
比较运算符。
if(totalValue = 200){
...
}
请注意,你不应该有一个if
语句后一个分号,因为那么Java将基本忽略if
。
如果您编写if(totalValue = 19),它会评估您是否可以成功地将19赋给totalValue。
成功与否,在Java中是一个布尔值,所以它期望评估布尔值。 表达:
if((totalValue = 19) == True){ ... }
是正确的,但也没用,在这种情况下,因为它几乎肯定成功赋值
如果你想只检查值必须使用==
'true'在Java中拼写为小写字母t。 – 2015-02-06 01:26:24
是的,但平等为==
,作业为=
。此外,请不要用分号结尾您的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
}
像其他人说的那样,Java中的'='操作符用于分配值。然而(可能有点偏离主题),赋值本身的计算结果为赋值,可以在布尔表达式中重用。
这可以在这个循环中,其中的readLine的结果被存储,并与空在单个表达式中使用,如:
int value;
while ((value = reader.read()) != -1) {
doSomething(value);
}
=符号是赋值运算符。
做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
'='是一个赋值运算符,而不是比较运算符。 – lared 2015-02-06 00:54:04
'if(totalValue == 200)'又如何去掉';'呢? – Reimeus 2015-02-06 00:54:13
谢谢你们! – 2015-02-06 00:58:36