Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;及;及;或;java中的语句_Java - Fatal编程技术网

&引用;及;及;或;java中的语句

&引用;及;及;或;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

我对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 = 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个编译器错误:

  • 整个if语句缺少外括号
  • 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
    }