2014-12-07 110 views
-1

我希望我的用戶繼續輸入員工編號,直到用戶輸入-1,這會停止循環。但我的代碼不斷打印輸入的數字,不會再提出另一個問題。保持要求用戶輸入數據,陷入無限循環

System.out.println("Which employee number do you want to see -->"); 
    index = myScanner.nextInt(); 

    while (payData.getOneEmpNum(index) != -1) 
    { 
     if (payData.getOneEmpNum(index) >= 0) 
     { 
      System.out.printf("Sequential found employee #%d ",payData.getOneEmpNum(index)); 
      System.out.printf("and the pay rate is $%.2f.\n ", payData.getPayRate(index)); 

      System.out.printf("Binary found employee #%d ",payData.getOneEmpNum(index)); 
      System.out.printf("and the pay rate is $%.2f.\n ", payData.getPayRate(index)); 
     } 
     else 
     { 
      System.out.println("Invalid employee number!"); 
     } 

     System.out.println("Which employee number do you want to see -->"); 
    } 
+2

我沒有看到你要的輸入'而()'循環內?什麼會導致'payData.getOneEmpNum(index)'改變,導致循環中斷? – mash 2014-12-07 04:28:31

+0

得到循環內的下一個輸入 ** index = myScanner.nextInt(); ** – 2014-12-07 04:34:18

回答

2

您在while循環中沒有更新index。在你的循環的末尾添加這一行:

index = myScanner.nextInt(); 

System.out.println("Which employee number do you want to see -->");

+0

謝謝,但現在它不會打印行,如果它的一個無效的數字。它只是結束循環 – jaramore 2014-12-07 04:47:28

+0

是不是整個點...當用戶提供-1時結束循環? – 2014-12-07 04:48:50

+0

是的,但它也需要在我的if語句中有效。我也嘗試while(payData.getOneEmpNum(index)!= -1 || payData.getOneEmpNum(index)> = 0),它仍然通過循環,如果我輸入200.它應該說無效的數字,並再次問這個問題 – jaramore 2014-12-07 04:53:04

0

現在你更新你的代碼,看起來像你只需要一個index = myScanner.nextInt(); while循環裏面。您目前設置的方式,您會希望在最後的println聲明之下。

0

,就應該替換代碼的前幾行:

while ((index = myScanner.nextInt()) != -1) 
{ 
    if (payData.getOneEmpNum(index) >= 0) 
    { 
+0

我不認爲這會起作用。在Java中,'x = y'將基於成功返回一個'boolean',而不是操作結果的'integer'?也許我錯了。 – mash 2014-12-07 04:53:37

+0

'='是一個賦值運算符,不是比較運算符。 'x == y'將返回我在這裏沒有使用的布爾值。 @mash – afzalex 2014-12-07 21:27:03

+0

是的,賦值運算符_returns_的一個值。我相信它會返回一個表示成功的'boolean'(這就是C++所做的) – mash 2014-12-08 20:17:13