2013-10-23 81 views
0

当我设置while1一个回路,其中while1的值是真实的假=内部和循环条件是当(while1)它应该退出循环。不过,在嵌套if语句中,它似乎没有这样做。真布尔while语句不退出循环中嵌套IFS

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:"); 
      } 
     } 
    } 
} 
+0

你有没有调试的应用程序,以确保你是正确的? –

+0

您输入的值是多少? –

+2

它会一直持续到下一次循环迭代。如果你想立即跳出循环,使用'break'。 – kiheru

回答

1

转动布尔假,意味着回路将不会完成另外反过来,然而,将会沿其路径继续,即“47”鸡蛋是> 12且小于“144”,eggsDozenRemainder是> 0,因此如果块将会运行,但是如果判定不是相互排斥的话,那么后面的块也是如此,尝试If(){} else {}

尝试控制流程图http://en.wikipedia.org/wiki/Control_flow_diagram以帮助理解。