Как Java обрабатывает входные символы в этой программе? Как выглядит буфер?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как Java обрабатывает входные символы в этой программе? Как выглядит буфер?

Сообщение Anonymous »

Как работает эта Java-программа и каков ее результат?
Я работаю над Java-программой, которая выполняется до тех пор, пока не будет введена буква S. Вот код:

Код: Выделить всё

// Loops until the letter S is entered
class ForTest {
public static void main(String[] args)
throws java.io.IOException {

int i;
char x;
System.out.println("Enter 'S' to stop.");

for(i = 0; (x = (char) System.in.read()) != 'S'; i++) {
System.out.println("Iteration " + i + ", read character: " + x);
}
}
}
Мой вопрос
Почему программа отображает дополнительные итерации, даже если я ввожу только один символ (в данном случае L)?
Для ввода одного символа, например «h», я ожидаю, что результат будет следующим:

Код: Выделить всё

Iteration 0, read character: h
Но вместо этого я получаю:

Код: Выделить всё

Iteration 0, read character: h

Iteration 1, read character:

Iteration 2, read character:
Заранее спасибо! Я новичок в Java и пытаюсь понять, как все работает в этом случае.
Я пробовал печатать символы в цикле, но два последних символа кажутся пробелами

Подробнее здесь: https://stackoverflow.com/questions/791 ... looks-like
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»