2015-04-20 54 views
0

我正在創建一個while循環來確定if (count == numbers.length)然後循環將跳出此時。無論何時我運行打印語句來查看錯誤發生的位置,無論我的計數設置爲多少,無論實際輸入了多少個數字,我的numbers.length也會設置爲相同的值。我該如何解決這個錯誤?Java將計數與用戶輸入錯誤進行比較

// Create a scanner to read user input 
Scanner s = new Scanner(System.in); 

// Prompts user to enter the integer count 
System.out.print("How many integers would you like to enter: "); 
int count = s.nextInt(); 
s.nextLine(); 
// s.nextLine() closes the previous scanner reader 

while(true) { 

    // Prompts user to enter the integer numbers here based on count 
    System.out.print("\nEnter your integer numbers here: "); 
    int [] numbers = new int[count]; 
    Scanner numScanner = new Scanner(s.nextLine()); 

    for (int i = 0; i < count; i++) { 
     if (numScanner.hasNextInt()) { 
      numbers[i] = numScanner.nextInt(); 
      if (numbers.length == count) { 
      break; 
      } 
     } 
     else { 
      System.out.print("Must enter the correct amount of numbers"); 
     } 
    } 

} 

回答

0
int [] numbers = new int[count]; 

這行創建整數的count尺度的陣列。因此,在初始化陣列時,其大小將等於count。最終,數組中的所有值都將爲0.

您可能想改爲使用List。例如:

List<Integer> numbers = new ArrayList<>(); 
... 
numbers.add(numScanner.nextInt()); 

爲了打破循環在必要的時候:

if (numbers.size() == count){ 
    break; 
} 
0

有幾個問題在這裏:

首先,你需要使用i,不numbers.length,作爲前者將增加每個輸入的數字,而後者將始終與count相同。

其次,break不會退出while循環,而只是for循環。由於您也想退出while循環,因此可以使用布爾值而不是while (true),然後將該值設置爲false

boolean needInput = true; 
while (needInput) { 
    .... 
    if (i == count) { 
     needInput = false; 
     break; 
    } 
} 
相關問題