2016-12-09 1 views
0
class Copied{ 
    public static void main(String args[])  throws java.io.IOException { 
     int i; 
     System.out.println("Press S to stop."); 
     for(i = 0; (char) System.in.read() != 'S'; i++)  
      System.out.println("Pass #" + i); 
    } 
} 

я не мог получить ожидаемый результат.как я остановить бесконечный цикл с использованием полукокса (вход с клавиатуры method-System.in.read(). System.in?

+2

Прекрасно работает для меня. Каков ваш ожидаемый результат? Или вы сбиты с толку о двойном выходе «Pass #» на введенный символ? – Tom

+1

Каков ожидаемый результат? Я бы ожидал, что вышеуказанный цикл остановится при вводе S. – GhostCat

+0

Мне нужен бесконечный цикл, который останавливается после нажатия S, так что я не должен нажимать ввод после определенного вывода –

ответ

0

Вышеприведенный код делает сложно это

(char) System.in.read() != 'S' 

.read() бы

Читает следующий байт данных из входного потока. значение байта г eturned как int в диапазоне 0 до 255

Таким образом, ваш вклад рассматриваются как:

Input : a 
Output : Pass #0 // for a 
Pass #1 //for Enter 


Input : all 
Output : Pass #2 // a 
Pass #3 //l 
Pass #4 //l 
Pass #5 // Enter 

и аналогично для любой строки, если она не включает в себя персонажу S

Input : stingWithSHere 
Output : Pass #6 //s 
Pass #7 //t 
Pass #8 //i 
Pass #9 //n 
Pass #10 //g 
Pass #11 //W 
Pass #12 //i 
Pass #13 //t 
Pass #14 //h 

и то он завершается. Надеюсь, что все станет ясно.


Для строго ограничить ввод от пользователя вы можете использовать вместо этого -

new Scanner(System.in).next(".").charAt(0) != 'S' 

С обновленным вопросом, ссылка разделяет @tom отвечает на него сейчас -

How to get input without pressing enter every time?

+0

На самом деле я хотел, чтобы цикл продолжался, если я не вхожу в «S», так что мне не нужно нажимать Enter после определенного отображения, я хочу, чтобы он продолжался мы можем это сделать, но это тоже полезно для меня, спасибо. –

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