Стандартная модель ввода/вывода в Java имеет System.in, System.out и System.err. Выше для записи в стандартный вывод, использовался System.out, который представляет собой объект PrintStream. System.err аналогичен PrintStream, а System.in является производной InputStream без каких-либо включений. Это означает, что в отличие от System.out и System.err, System.in должен куда-то включаться (быть обернут), прежде, чем можно прочесть из него.
Обычно выполняется построчный ввод, используя readLine( ), для этого надо поместить System.in в BufferedReader. Чтобы сделать это, можно конвертировать System.in в Reader, используя InputStreamReader. Вот пример, который просто повторяет каждую вводимую строку:
// чтение из стандартного ввода.
import java.io.*;
public class Demo {
public static void main(String[] args)
throws IOException {
BufferedReader in=new BufferedReader(
new InputStreamReader(System.in));
String s;
while((s = in.readLine()).length() != 0)
System.out.println(s);
// Пустая строка прерывает выполнение программы
}
} ///:~
Причина указания исключения в том, что readLine( ) может выбросить IOException. Обратите внимание, что System.in обычно должен быть буферизирован, как и большинство потоков.