繁体   English   中英

Java中如何使用逻辑运算符

[英]How to use logical operator in 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)){

这是因为您使用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+",");

你有一个else 前面的if (s) 都是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 + ",");
}

另请参阅FizzBuzz 挑战

运行前

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,");}

以上两个之前

当然它不会运行,当你的前两个 if 条件之一评估为true时,你永远不会遇到那个 if 块。

例如,如果i = 3 ,那么您的第一个条件if(i%3==0)将评估为true并且您的打印输出Apa ,因为条件的 rest 是else if java 代码将停止处理并且 Z34D1F725A07423FE1C889F448B33D21F46Z 代码将停止处理并且 Z34D1F725A07423FE1C889F448B33D21F46Z 将停止处理并且 Z34D1F725A07423FE1C889F448B33D21F46Z 到下一个 Z34D1F91FB2E5A8B9循环迭代。 同样,如果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 ,然后 go 将i%5==0评估为falsetruefalse = false )。

然后,如果i = 15它将评估为true ,因为它将评估i%3==0true ,然后 go 将i%5==0评估为truetruetrue = false )。

}else if ((i%3==0)&&(i%5==0)){中的条件在 i%3 等于 0 或 i%5 等于 0 时评估为真,因此,如果您真的想要}else if ((i%3==0)&&(i%5==0)){运行你可以使用}if ((i%3==0)&&(i%5==0)){而不是它,或者您至少应该将它放在}else if (i%5==0){之上,或者您可以像其他人告诉我的那样使用它:

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,");
            }else if (i%5==0){
                System.out.print("Boleh,");
            }else if(i%3==0){
                System.out.print("Apa,");
            }
            System.out.print(i+",");
       }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM