[英]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
评估为false
( true
和false
= false
)。
然后,如果i = 15
它将评估为true
,因为它将评估i%3==0
为true
,然后 go 将i%5==0
评估为true
( true
和true
= 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.