&引用;及;及;或;java中的语句
我对java中的“and”和“or”语句有一个问题。有没有办法在同一个if语句中同时使用它们 例如:&引用;及;及;或;java中的语句,java,Java,我对java中的“and”和“or”语句有一个问题。有没有办法在同一个if语句中同时使用它们 例如: if(a==max && b==0) || (a==max && c==0){ a==0; } else { a==max; } 这合法吗?您需要在外面加上括号: if((a==max && b==0) || (a==max && c==0)) { a = 0; } else { a = ma
if(a==max && b==0) || (a==max && c==0){
a==0;
} else {
a==max;
}
这合法吗?您需要在外面加上括号:
if((a==max && b==0) || (a==max && c==0)) {
a = 0;
} else {
a = max;
}
请记住,=
是一种比较,=
是一种赋值:
a = 5; // a is now 5.
if(a == 5) // is a equal to 5?
// more code
另请注意,您的逻辑可以通过以下方式压缩:
当然,在一个if语句中可以使用任意多个
和
或或
语句,直到内存耗尽为止
i、 e
是完全有效的。但是,您不能忘记运算符优先级
所以当你读书的时候
“如果a等于b或b等于c且d等于e或d等于c”
编译器读取:
if(a == b || (b == c && d == e) || d == c)
换言之,我们只需使用true和false:
if(false || false && true || false)
结果是错误的
但是为什么呢
如果(假| | |(假)| |假)
和
在或
之前,就像*
在+
之前一样
有没有办法在同一个if语句中同时使用它们
是的!你完全在正确的轨道上,只是缺少了一组括号,还有一些其他的小错误
您的想法是正确的。您希望使用两个and语句,其中如果左语句或右语句为真,您将分配a=0
,否则a=max
if((a==max && b==0) || (a==max && c==0)){ // Compilation error #1
a=0; // Compilation error #2
} else {
a=max; // Compilation error #3
}
因此,如果您试图运行代码,将出现3个编译器错误:
a==0
应该是a=0
以将零指定给0,而不是检查是否相等a==max
应为a=max
,原因与2相同以下是所有其他答案的基础,但没有人明确指出: 一个简单的
if
语句看起来像if(条件)语句
条件周围的括号不是可选的。尝试时发生了什么?逻辑上合法,但语法上不合法。我会添加另一组括号:
if((a==max&&b==0)| |(a==max&&c==0)){
您也可以这样做,如果(a==max&&b==0 | c==0),则冗余度会更小:
这并没有直接回答问题,只是纠正了他的代码mistake@NicholasEason是的,他的问题是括号。
if(false || false && true || false)
//Remember how and statements work, true && false is still false
if((a==max && b==0) || (a==max && c==0)){ // Compilation error #1
a=0; // Compilation error #2
} else {
a=max; // Compilation error #3
}