2013-10-23 122 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以幫助理解。