java中的“和”和“或”语句

时间:2015-04-24 19:29:57

标签: java

我对java中的“和”和“或”语句有疑问。有没有办法在同一个if语句中同时使用它们?

例如:

if(a==max && b==0) || (a==max && c==0){
    a==0;
} else { 
     a==max;
}

这是合法的吗?

4 个答案:

答案 0 :(得分:2)

你需要在外面围绕括号:

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

另外,作为旁注,您的逻辑可以使用boolean algebra压缩:

if((a == max && b == 0) || (a == max && c == 0))

is the same as:

if(a == max && (b == 0 || c == 0))

答案 1 :(得分:2)

当然,您可以在单个if语句中使用尽可能多的public static String rotate(String userString, int shiftValue, int shiftDirection) { if (shiftDirection == 1) { return rotate(userString, shiftValue); } else if (shiftDirection == 2) { return rotate(userString, -shiftValue); } else { return "This is not a valid way to shift your message."; } } public static String rotate(String userString, int shiftValue) { StringBuilder encoded = new StringBuilder(); int myShift = shiftValue % 26 + 26; for (char i : userString.toCharArray()) { if (Character.isLetter(i)) { if (Character.isUpperCase(i)) { encoded.append((char) ('A' + (i - 'A' + myShift) % 26 )); } else { encoded.append((char) ('a' + (i - 'a' + myShift) % 26 )); } } else { encoded.append(i); } myShift = (myShift + shiftValue) % 26; } return encoded.toString(); } and语句,直到内存不足为止。

or

完全有效。但是,你不能忘记运营商的优先权!

所以当你阅读

"如果a等于b或b等于c且d等于e或d等于c"

编译器读取:

if(a == b || b == c && d == e || d == c)

换句话说,让我们使用true和false:

if(a == b || (b == c && d == e) || d == c)

结果:false

为什么

if(false || false &&  true || false)

if(false ||(false)|| false)

//Remember how and statements work, true && false is still false 出现在and之前,就像or之前*

一样

答案 2 :(得分:2)

这是所有其他答案的基础,但没有其他人明确说过:

简单的if语句如果,如果 条件 声明< / em>的

条件周围的括号不是可选的。

答案 3 :(得分:0)

  

有没有办法在同一个if语句中同时使用它们?

是的!你完全走上正轨,错过了一套括号,还有一些其他的小错误!

你有正确的想法。您想要使用两个和语句,如果左侧或右侧语句为真,您将分配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个编译器错误:

  1. 缺少整个if语句的外括号
  2. a==0a=0将0归为0,而不是检查是否相等
  3. a==max应为a=max,理由与2.
  4. 相同