2016-03-28 3 views
0

Im ищет форму, чтобы сделать Scanner прекратить чтение, когда вы нажимаете на первый раз (так, если я автоматически нажать клавишу K программы considerer, что я нажимаю Ввод ключ, поэтому он останавливается, чтобы распознавать входы, сохраните K и продолжайте работу с программой).Java Сканер: прекратить чтение после первой записи

Im using char key = sc.next(). CharAt (0); в начале, но не знаете, как остановить его, не нажимая Intro

Заранее спасибо!

+0

что вы подразумеваете под давлением? вы просто пытаетесь читать в 1 строке от пользователя? –

+0

Нет, просто клавиша, нажимаемая пользователем на клавиатуре – Frikilangelo

+0

@Frikilangelo Вы нашли решение по вашей проблеме? –

ответ

0

К сожалению, Java не поддерживает консоль без блокировки и, следовательно, вы не можете прочитать входной символ пользователя по символу (см. this SO ответ для получения дополнительной информации).

Однако то, что вы можете сделать это, вы можете попросить пользователя ввести всю строку и не обрабатывать каждый символ его до Введение встречается, ниже приведен пример:

System.out.println("Enter the input"); 
Scanner scanner = new Scanner(System.in); 
String input = scanner.nextLine(); 
StringBuilder processedChars = new StringBuilder(); 
for(int i=0 ; i<input.length() ; i++){ 
    char c = input.charAt(i); 
    if(c == 'K' || c == 'k'){ 
     break; 
    }else{ 
     processedChars.append(c); 
    } 
} 
System.out.println(processedChars.toString()); 
+0

Грустно слышать это; то, что я хотел, это то же самое, что и вы, но автоматически, чтобы избежать «лишнего нажатия клавиши». Возможно, когда-нибудь у нас будет такой вариант. – Frikilangelo

0

Если вы хотите чтобы прекратить прием после одного определенного символа, вы должны прочитать входной символ пользователя по символу. Попробуйте выполнить сканирование на основе Pattern одного символа или с помощью класса Console.

Scanner scanner = new Scanner(System.in); 
Pattern oneChar = new Pattern(".{1}"); 
// make sure DOTALL is true so you capture the Enter key 
String input = scanner.next(oneChar); 
StringBuilder allChars = new StringBuilder(); 

// while input is not the Enter key { 
    if (input.equals("K")) { 
     // break out of here 
    } else { 
     // add the char to allChars and wait for the next char 
    } 
    input = scanner.next(oneChar); 
} 
// the Enter key or "K" was pressed - process 'allChars' 
+0

Шаблон для меня новый, я посмотрю на него, похоже, что им что-то не хватает, потому что ** новая модель («. {1}»); ** часть просит меня о другой int аргумент – Frikilangelo

+0

Try * Pattern scanner = Pattern.compile (". {1}"); * –

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