2015-04-20 7 views
0

Я создаю цикл while, чтобы определить if (count == numbers.length), тогда цикл выйдет из строя. Всякий раз, когда я запускаю операторы печати, чтобы увидеть, где я ошибаюсь, независимо от того, что мой счет установлен, моя number.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 -sized массив целых чисел. Итак, в момент, когда вы инициализируете свой массив, его размер будет равен count. В конце концов, все значения в массиве будут равны 0.

Возможно, вы захотите использовать Список. например:

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

Чтобы разорвать петлю, когда это необходимо:

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

Есть несколько вопросов здесь:

Во-первых, вы хотите использовать i, не numbers.length, как прежний будет увеличиваться для каждого введенного числа, тогда как позже будет всегда соответствовать count.

Во-вторых, a break не выйдет из цикла while, а скорее всего будет состоять из цикла for. Так как вы хотите выйти из цикла while, вы можете использовать логическое значение вместо while (true), а затем установить это значение на false.

boolean needInput = true; 
while (needInput) { 
    .... 
    if (i == count) { 
     needInput = false; 
     break; 
    } 
} 
Смежные вопросы