Java True boolean while语句不在嵌套ifs中退出循环

Java True boolean while语句不在嵌套ifs中退出循环,java,if-statement,while-loop,nested,Java,If Statement,While Loop,Nested,当我在while1的值为true且循环条件为while(while1)的循环内设置while1=false时,它应该退出循环。不过,在嵌套的if语句中,它似乎并没有这样做 package javanotes; import java.util.Scanner; public class EggsCount { static Scanner var1 = new Scanner(System.in); public static void main (String[] arg

当我在while1的值为true且循环条件为while(while1)的循环内设置while1=false时,它应该退出循环。不过,在嵌套的if语句中,它似乎并没有这样做

package javanotes;
import java.util.Scanner;

public class EggsCount {

    static Scanner var1 = new Scanner(System.in);

    public static void main (String[] args){    

        int eggNumber;
        int eggsGross;
        int eggsDozen;
        int eggsSingle;
        int eggsGrossRemainder;
        int eggsDozenRemainder;
        boolean while1 = true;
        boolean while2 = true;

        System.out.println("How many eggs do you have?");
        eggNumber = var1.nextInt();

        while (while1){
            if (eggNumber > 144){
                eggsGross = eggNumber / 144;
                eggsGrossRemainder = eggNumber % 144;

                if(eggsGrossRemainder > 12) {
                    eggsDozen = eggsGrossRemainder / 12;
                    eggsDozenRemainder = eggsGrossRemainder % 12;
                    if (eggsDozenRemainder > 0){
                        eggsSingle = eggsDozenRemainder;
                        System.out.println("You have " + eggsGross + " gross amount of eggs, " + eggsDozen + " dozens mounts of eggs, and "
                                + eggsSingle + " remainder eggs.");
                        while1 = false;
                    }
                    System.out.println("You have " + eggsGross + " gross amount of eggs and " + eggsDozen + " dozens mounts of eggs.");
                    while1 = false;
                }
                System.out.println("You have " + eggsGross + " gross amounts of eggs.");
                while1 = false;
            }
            else if(eggNumber <= 144 && eggNumber >= 12){
                eggsDozen = eggNumber / 12;
                eggsDozenRemainder = eggNumber % 12;
                if (eggsDozenRemainder > 0){
                    eggsSingle = eggsDozenRemainder;
                    System.out.println("You have " + eggsDozen + " dozen eggs and " + eggsSingle + " remainders.");
                    while1 = false;
                }
                System.out.println("You have " + eggsDozen + " dozen eggs.");
                while1 = false;
            }
            else if (eggNumber > 0 && eggNumber < 12){
                eggsSingle = eggNumber;
                System.out.println("You have no Gross amounts or Dozen amounts, only " + eggsSingle + " singles.");
                while1 = false;
            }
            else{
                System.out.println("C'mon now... let's put a normal value in:");
            }
        }
    }
}
封装javanotes;
导入java.util.Scanner;
公开课{
静态扫描仪var1=新扫描仪(System.in);
公共静态void main(字符串[]args){
整数;
内艾格斯罗斯;
int eggsDozen;
int eggsSingle;
int-eggsgross余数;
int EGGSDOZENREMINDER;
布尔值while1=true;
布尔值while2=true;
System.out.println(“你有多少个鸡蛋?”);
eggNumber=var1.nextInt();
while(while1){
如果(蛋数>144){
eggsGross=eggnnumber/144;
eggsgrossrements=eggNumber%144;
如果(余数大于12){
eggsDozen=eggsgross/12;
EGGSDOZENREMINDER=EGGSGROSS剩余值%12;
如果(EGGSDOZENREMINDER>0){
eggsSingle=EggsDozenRemander;
println(“您有“+eggsGross+”鸡蛋总量“+eggsDozen+”几十个鸡蛋,以及”
+蛋单+“剩余蛋”);
while1=假;
}
println(“你有“+eggsGross+”鸡蛋总量和“+eggsDozen+”几十个鸡蛋。”);
while1=假;
}
System.out.println(“您有”+eggsGross+“鸡蛋总量”);
while1=假;
}
else if(蛋数=12){
eggsDozen=蛋数/12;
EGGSDOZENREMINDER=鸡蛋编号%12;
如果(EGGSDOZENREMINDER>0){
eggsSingle=EggsDozenRemander;
println(“你有“+eggsDozen+”打鸡蛋和“+eggsSingle+”剩余物”);
while1=假;
}
System.out.println(“你有“+eggsDozen+”打鸡蛋“);
while1=假;
}
else if(eggNumber>0&&eggNumber<12){
eggsSingle=蛋数;
System.out.println(“您没有总金额或打金额,只有”+eggsSingle+“singles”);
while1=假;
}
否则{
System.out.println(“现在来吧……让我们把一个正常值放入:”);
}
}
}
}

将布尔值改为false,意味着循环将不会完成另一个循环,但它将沿着其路径继续,即“47”eggs大于12且小于“144”,eggsDozenRemainder大于0,因此if块将运行,但随后的块也将运行,因为如果决策不是互斥的,请尝试if(){}else{}


请尝试使用控制流程图来帮助理解。

您是否调试了应用程序以确保正确?输入的值是多少?它将持续到下一个循环迭代。如果您想立即中断循环,请使用
break
。您确实需要开始将代码拆分为更多的方法。这会帮助你识别错误。是的,我能做到,谢谢。我想看看我能把它伸展多远。