Почему это возможно? t мы читаем по одному символу из System.in?

Программа ниже печатает каждый символ, записанный по стандарту в, но только после того, как была записана новая строка (по крайней мере, в моей системе!).

public class Test {
    public static void main(String[] args) throws java.io.IOException {
        int c;
        while ((c = System.in.read()) != -1)
            System.out.print((char) c);
    }
}

Это не позволяет людям писать такие вещи, как «Нажмите любую клавишу, чтобы продолжить», и заставляет что-то вроде «Нажмите Enter, чтобы продолжить».

  • В чем основная причина этого?
  • Это ограничение Java?
  • . Зависимо ли это поведение от системы (I ' м на Ubuntu)? Как это работает на Mac? Windows?
  • Зависит ли это от конкретного терминала, в котором я запускаю приложение? (Для меня это ведет себя так же в Eclipse и в gnome-terminal)
  • Есть ли обходной путь?
18
задан Marc Mutz - mmutz 21 April 2011 в 15:21
поделиться