2015-06-15 46 views
0

有人可以解釋如何在不使用中斷或system.exit的情況下點擊'capacity exceeded'消息後結束程序,但會繼續提示如果沒有達到信息,'離開'和'進入'?如何打印變量的先前狀態並退出循環而不中斷

此外,對於'超出容量'消息,它還顯示totalPeople。然而,本節中的總人數卻成爲我進入許多人離開或進入的人羣。我怎麼能這樣做,這是我在進入假期或輸入數值以使其超出容量之前所儲存的總人數?

int numLeaving = Integer.parseInt(JOptionPane.showInputDialog("number leaving")); 
int numEntering = Integer.parseInt(JOptionPane.showInputDialog("number entering:")); 
while (totalPeople <= 65 && totalPeople >= 0) {   
    try {  
     if (numLeaving >= 0 && numEntering >= 0) { 
      totalPeople = (totalPeople + numEntering) - numLeaving; 
      JOptionPane.showMessageDialog(null,"Total people = " + totalPeople);           
     }   
     else {       
      JOptionPane.showMessageDialog(null,"Invalid data"); 
     } 
    } 
    catch (NumberFormatException e) { 
     JOptionPane.showMessageDialog(null,"Enter numbers only"); 
    } 

    if (totalPeople > 65) { 
     JOptionPane.showMessageDialog(null,"Capacity exceeded\n" + "Total people = " + totalPeople); 
    }  
    numLeaving = Integer.parseInt(JOptionPane.showInputDialog("number leaving")); 
    numEntering = Integer.parseInt(JOptionPane.showInputDialog("number entering:"));      
} 
+1

不想打擾,但'break'或'System.exit'有什麼問題? –

+0

@RC。看看這個:http://stackoverflow.com/questions/3922599/is-it-a-bad-practice-to-use-break-in-a-for-loop –

+0

我完全同意'System.exit'但是在這種情況下,我沒有看到有任何'break'錯誤(並且恕我直言,'break'比loop-var = clean要乾淨一些。] –

回答

1

我認爲你應該保存可以輸入常量的人數限制。就像這樣:

static final int maximumPeople = 65; 

所以,現在你可以在你的循環使用它的條件和任何你想要的:

while (totalPeople <= maximumPeople && totalPeople >= 0) 
{  
    //code 
} 

if (totalPeople > maximumPeople) { 
    //code 
} 

而且你要修改,你的情況,totalPeople另一個變量。在這種情況下,你可以展示你的總的人能夠進入的消息:

if (totalPeople > maximumPeople) 
{ 
    JOptionPane.showMessageDialog(null,"Capacity exceeded\n" + "Total people = " + maximumPeople); 
}  

而且還會因爲你使用totalPeople(人的實數已進入)離開你的循環。

我期待它對您有所幫助!

1

要不要繼續循環,我們必須使循環條件的錯誤:

if (totalPeople > 65) { 
    JOptionPane.showMessageDialog(null,"Capacity exceeded\n" + "Total people = " + totalPeople); 
    totalPeople = -1; 
} 

的循環代碼的其餘部分將被執行,但不會while循環再次進入。

如果你想保留的totalPeople值,最簡單的辦法是增加一個布爾變量,並用它在循環的條件:

boolean exit= false; 
while (totalPeople <= 65 && totalPeople >= 0 && !exit) { 
// .. 
    if (totalPeople > 65) { 
     JOptionPane.showMessageDialog(null,"Capacity exceeded\n" + "Total people = " + totalPeople); 
     exit= true; 
    } 
// .. 
+0

雖然while循環之前我已經設置totalPeople = 0 – dan

-1

把當前代碼在while循環和存儲totalPeople在另一個變量中。