2012-04-25 4 views
0

Всего Java новичок здесь. Работа над одной из моих первых программ Java. Пожалуйста помоги. Вот что я пытаюсь достичь: Мне нужно принять ввод на клавиатуре пользователя целых чисел, разделенных пробелами, скопировать их в массив и обработать их. KNOWN: пользователь вводит только одну строку данных. Я не знаю, сколько цифр, но как только они нажмут Enter, их больше не будет. Поскольку пользовательский ввод может содержать слова и специальные символы, мне нужно обработать их с помощью аккуратных ошибок и попросить пользователя повторить попытку. Когда я запускаю то, что я написал ниже, я попадаю в какой-то бесконечный цикл, где Scanner ждет дополнительный вход. Как я могу сказать, что все закончилось, и больше не будет входа?java.util.Scanner: продолжает ждать дополнительного ввода

Вот код:

<!-- language-all: java --> 

public static void EnterInts() { 

    System.out.println("Enter series of integers separated by whitespace. Press Enter key when finished."); 
    Scanner input = new Scanner(System.in); 
    while (input.hasNext()){ 
     if (input.hasNextInt(){ 
      int i = input.nextInt(); 
      System.out.println(i); 
     } 
     else { 
      System.out.println("Only integers can be entered. Try again."); 
     } 
    } 
} 

ответ

0

Похоже, вы должны прочитать одну строку ввода первого, а затем создать сканер для сканирования через эту одну линию.

Try используя BufferedReader и InputStreamReader читать строку первой:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
String str = in.readLine(); 

А затем создать Scanner, возможно, передавая StringBufferInputStream созданный из строки чтения в конструктор.

+0

Спасибо, Роб. Раньше я никогда не использовал эти классы, поэтому вам нужно взглянуть и посмотреть, как они работают. Копирование/Вставка кода приводит к ошибке - поэтому мне нужно выполнить мою должную осмотрительность. Спасибо за вашу помощь. –

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