2013-11-20 2 views
0

У меня есть код, который анализирует входную строку.Как читать Введите ключ в петле сканера

Scanner in = new Scanner(System.in); 
while (in.hasNext()) { 
    String s = in.next(); 
    if (s.matches("[0-9]+")) { 
     list.add(Integer.parseInt(s)); 
    } 
} 
in.close(); 

Но мне нужно остановить цикл, когда пользователь нажимает Enter. Как это исправить?

+0

Что вы имеете в виду: «остановите цикл, когда пользователь нажимает Enter»? Каков пример ввода? – Crazenezz

+0

"1 4 d asd 4d 56 2 34 fgfg6 67 234" = "1 4 56 2 34 67 234" – Alex

+0

@Alex: так что вы хотите вводить только одну строку, не так ли? –

ответ

0

Удалить While Loop

Scanner in = new Scanner(System.in); 
String s = in.nextLine(); 
if (s.matches("[0-9]+")) { 
    list.add(Integer.parseInt(s)); 
} 
in.close(); 
+0

Ваш код не помогает. Он читает только первый номер. Но если у меня есть вход такой «1 2 3 4 5 6», моя программа добавляет только первый номер («1») в список. – Alex

+0

Вам просто нужна одна линия, поэтому вам не нужно зацикливать, а затем используйте 'String s = in.nextLine();' чтобы взять вашу строку, когда вы нажимаете enter, после этого я не знаю, что вы будете делать на этой строке –

0

Ваши проблемы на части контура, ваш вход только один, но вы должны петля на основе длины строки. И когда вы попытаетесь разобрать на целое число, произойдет NumberFormatException. См. Пример ниже:

Scanner in = new Scanner(System.in); 
String s = in.nextLine(); 
List<Integer> list = new ArrayList<Integer>(); 

// Loop based on length of user input 
for (int i = 0; i < s.length(); i++) { 

    // Checking condition for every characters on user input 
    if (s.substring(i, i + 1).matches("[0-9]+")) { 

     // Add to list only the number part 
     list.add(Integer.parseInt(s.substring(i, i + 1))); 
    } 
} 

in.close(); 

for (Integer i : list) { 
    System.out.println(i); 
} 
Смежные вопросы