如何解决我的 if else 语句在 do while 循环中出现问题
我的 do-while 循环应该打印出 1 - 106 之间的数字(包括 1 和 106)
应该发生什么: 3 的倍数应该打印出 Big, 5 的倍数应该打印出平均值, 7 的倍数应该打印出错误, 3 和 5 的倍数应该打印出 BigMean, 3 和 7 的倍数应该打印出 BigBugs, 5 和 7 的倍数应该打印出 MeanBugs, 3、5 和 7 的倍数应该打印出 BigMeanBugs。
实际发生的事情: 我的 do-while 循环只运行第一个“if”语句。有什么帮助吗?
我的代码:
public static void main(String [] args){
int i = 0;
do{
++i;
if(i %3 == 0){
System.out.print("Big,");
if(i %5 ==0){
System.out.print("Mean,");
}
if(i %7 ==0){
System.out.print("Bugs,");
}
if((i %3 == 0) && (i %5 == 0)){
System.out.print("BigMean,");
}
if((i %3 == 0) && (i %7 == 0)){
System.out.print("BigBugs,");
}
}else if((i %5 == 0) && (i %7 == 0)){
System.out.print("MeanBugs,");
}else if((i %3 == 0) && (i %5 == 0) && (i %7 ==0)){
System.out.print("BigMeanBugs,");
}else{
System.out.print(i + " ");
}
}while(i<=106);
}//closing main
解决方法
正如我所看到的,您的问题可能是您的 if-statements 在第一个 if-statement 内,所以也许您想要这个:
public class BigMeanBugsDoWhileLoop
{
public static void main(String [] args)
{
int i = 0;
do
{
++i;
boolean bug = false;
String result = "";
if(i %3 == 0)
{
result += "Big";
bug = true;
}
if(i %5 ==0)
{
result += "Mean";
bug = true;
}
if(i %7 ==0)
{
result += "Bugs";
bug = true;
}
if(!bug)
{
System.out.println(i + "");
}
else
{
System.out.println(result);
}
}while(i<106);
}//closing main
} // closing class
您不需要其他 if 语句,因为您不使用 break
,因此将在下一次迭代之前评估其他表达式。
- 首先,如果某物能被 3 和 7 整除,它也能被 21 整除。
- 其次,如果您颠倒顺序,您会先分别被 3 和 5 整除,然后再被 3 或 5 整除(假设这是您想要的)。如果您以另一种方式这样做,您可能会在检查其他可能因素之前过早地打印值或完全错过它们。此行为还取决于
if
与if/else if
语句。
我已将打印输出限制为 25 以避免出现冗长的列表。根据您的需要进行修改。
public class BigMeanBugsDoWhileLoop {
public static void main(String[] args) {
int i = 1;
do {
String bugType = "";
if (i % 105 == 0) {
bugType = "BigMeanBugs"; // 3 5 7
} else if (i % 35 == 0) {
bugType = "MeanBugs"; // 5 7
} else if (i % 21 == 0) {
bugType = "BigBugs"; // 3 7
} else if (i % 15 == 0) {
bugType = "BigMean"; // 3 5
} else if (i % 7 == 0) {
bugType = "Bugs"; // 7
} else if (i % 5 == 0) {
bugType = "Mean"; // 5
} else if (i % 3 == 0) {
bugType = "Big"; // 3
}
System.out.println(bugType.isEmpty() ? i : bugType);
i++;
} while (i <= 25);
}// closing main
} // closing class
打印这个。
1
2
Big
4
Mean
Big
Bugs
8
Big
Mean
11
Big
13
Bugs
BigMean
16
17
Big
19
Mean
BigBugs
22
23
Big
Mean
,
你必须在循环结束时增加 i 的值
public static void main(String [] args){
int i = 1;
do{
if(i %3 == 0){
System.out.print("Big,");
if(i %5 ==0){
System.out.print("Mean,");
}
if(i %7 ==0){
System.out.print("Bugs,");
}
if((i %3 == 0) && (i %5 == 0)){
System.out.print("BigMean,");
}
if((i %3 == 0) && (i %7 == 0)){
System.out.print("BigBugs,");
}
}else if((i %5 == 0) && (i %7 == 0)){
System.out.print("MeanBugs,");
}else if((i %3 == 0) && (i %5 == 0) && (i %7 ==0)){
System.out.print("BigMeanBugs,");
}else{
System.out.print(i + " ");
}
i++;
}while(i<=106);
}//closing main
} // closing class
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。