2014-01-24 3 views
1

Я пытаюсь создать программу, которая попросит многих людей войти в ArrayList, а затем случайно выбрать имя из него. Код работает нормально, но строка, запрашивающая ввод имени, отображается дважды при первом запуске. Есть ли подсказка, почему это происходит?Ошибка выхода ArrayList

Что я хочу для отображения: Введите имя: ......

Что отображает: Введите имя: Введите имя: ......

import java.util.*; 

class RandomNumGen 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     Random random = new Random(); 

     ArrayList<String> names = new ArrayList<String>(); 

     int a, b; 

     System.out.print("\nEnter the number of people: "); 
     a = input.nextInt(); 
     System.out.println(); 

     for (int i = 0; i <= a; i++) 
     { 
      System.out.print("Enter a name: "); 
      names.add(input.nextLine()); 
     } 

     b = random.nextInt(a); 
     System.out.print("\nRandom name: " +names.get(b)+ "\n"); 
    } 
} 

ответ

2

Проблема заключается в том, что nextInt() просто потребляет целое число, но не символ новой строки, введенный при нажатии . Введите.

Чтобы решить эту проблему вы можете добавить

input.nextLine(); 

после вызова nextInt() так он потребляет символ новой строки.

Другой вариант бы читает всю строку, а затем синтаксический анализ его содержания (String) к int:

a = Integer.parseInt(input.nextLine()); 
+0

Спасибо! Разбор работал идеально. – KTF

Смежные вопросы