4 回答
TA贡献1860条经验 获得超9个赞
跑步前
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,");}
在上面两个之前
TA贡献1876条经验 获得超6个赞
你有一个前面的两个else都是; 仅输入第一个。我会将测试保存到局部变量中,因为重复所有这些模数运算并不是很干净。喜欢,iftrue
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 + ",");
}
TA贡献1830条经验 获得超3个赞
这是因为您用来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+",");
TA贡献1744条经验 获得超4个赞
当然它不会运行,当你的前两个 if 条件之一评估为 时true,你将永远不会到达该 if 块。
例如,如果i = 3那么您的第一个条件if(i%3==0)将计算为true并且您的打印输出Apa,因为其余条件是else ifjava代码将停止处理并进入下一个循环迭代。类似地,如果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+",");
}
}
}
然后 ifi = 3它将计算为false因为它将计算i%3==0为true然后继续计算i%5==0为false(true和false= false)。
然后 ifi = 15它将计算为true因为它将计算i%3==0为true然后继续计算i%5==0为true(true和true= false)。
添加回答
举报