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)){
。
答案 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 + ",");
}
答案 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==0
和false
= true
)。
然后如果false
会评估为false
,因为它将i = 15
评估为true
,然后继续将i%3==0
评估为{{ 1}}(true
和i%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){