如何在Java中使用逻辑运算符

时间:2019-10-04 05:33:08

标签: java

java如何使用Java中的逻辑运算符评估以下代码?

public class ApaBoleh{
  public static void main(String[]args){
      for(int i=1;i<=100;i++){
          if(i%3==0){
              System.out.print("Apa,");
          }else if (i%5==0){
              System.out.print("Boleh,");
          }else if ((i%3==0)&&(i%5==0)){
              System.out.print("ApaBoleh,");
          }
         System.out.print(i+",");
      }
  }
}

当我运行此代码时,以下行不运行 }else if ((i%3==0)&&(i%5==0)){

5 个答案:

答案 0 :(得分:1)

这是因为您使用else排除了在条件变为true之前的所有内容。尝试先检查最特殊的情况:

if (( i%3 == 0 ) && ( i%5 == 0 )){
    System.out.print("ApaBoleh,");
}else if ( i%3 == 0){
    System.out.print("Apa,");
}else if ( i%5 == 0){
    System.out.print("Boleh,");
}

System.out.print(i+",");

答案 1 :(得分:1)

您有一个else,在if之前的两者true;仅输入第一个。我将测试保存到局部变量,因为重复所有这些模运算不是很干净。喜欢,

for (int i = 1; i <= 100; i++) {
    boolean mod3 = i % 3 == 0, mod5 = i % 5 == 0;
    if (mod3 && mod5) {
        System.out.print("ApaBoleh,");
    } else if (mod3) {
        System.out.print("Apa,");
    } else if (mod5) {
        System.out.print("Boleh,");
    }
    System.out.print(i + ",");
}

另请参阅The FizzBuzz challenge

答案 2 :(得分:1)

运行前

else if ((i%3==0)&&(i%5==0)){ System.out.print("ApaBoleh,");}

它运行

if(i%3==0){
    System.out.print("Apa,");
}else if (i%5==0){
    System.out.print("Boleh,");

所以你必须放

else if ((i%3==0)&&(i%5==0)){ System.out.print("ApaBoleh,");}

在两个以上

答案 3 :(得分:0)

当然,它不会运行,如果前两个条件之一达到true,那么如果阻塞就永远不会实现。

例如,如果i = 3,则您的第一个条件if(i%3==0)将计算为true并打印出Apa,因为其余条件均为{{1} } Java代码将停止处理并转到下一个循环迭代。同样,如果else if,则第一个条件的评估结果为i = 5,第二个条件false的评估结果为if(i%5==0),并且不会继续到下一个true

因此,如果您先前的任何一个条件的评估结果为else if,您将不会达到第三个条件。

除此之外,如果您必须删除前面的两个true状态元,而仅按以下方式评估该条件:

if

然后如果public class ApaBoleh{ public static void main(String[]args){ for(int i=1;i<=100;i++){ if ((i%3==0)&&(i%5==0)){ System.out.print("ApaBoleh,"); } System.out.print(i+","); } } } 会评估为i = 3,因为它将false评估为i%3==0,然后继续将true评估为{{ 1}}(i%5==0false = true)。

然后如果false会评估为false,因为它将i = 15评估为true,然后继续将i%3==0评估为{{ 1}}(truei%5==0 = true)。

答案 4 :(得分:0)

每当i%3等于0或i%5等于0时,}else if ((i%3==0)&&(i%5==0)){中的条件都为true,因此,如果您确实希望运行}else if ((i%3==0)&&(i%5==0)){,则可以使用{{ 1}}而不是它,或者至少应该将其放在}if ((i%3==0)&&(i%5==0)){上方,或者可以像其他人一样使用它:

}else if (i%5==0){