Мой код выглядит примерно так:
InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(isReader);
while (true) {
try {
String inputStr = null;
if ((inputStr=bufReader.readLine()) != null) {
//DO SOMETHING
}
else {
System.out.println("input is null");
}
}
catch (Exception e) {
//DO SOMETHING
}
}
Когда я бегу
java -classpath ../src test.TestProgram < filename
он обрабатывает первую строку в файле хорошо, но он сохраняет input is null
печати input is null
и никогда не переходит во вторую строку.
Как я могу изменить свою программу, чтобы сообщить ей, что входной сигнал ошибки будет идти и перейти к следующей строке?
PS: файл, который мне нужно прецессировать, выглядит следующим образом:
111111111
111111112
111111113
...
Я пытался
java -classpath ../src test.TestProgram < filename
echo 'cat filename' | java -classpath ../src test.TestProgram
java -classpath ../src test.TestProgram <<< 'cat filename'
и все они потерпели неудачу
Моя ошибка... Я положил "BufferedReader bufReader = new BufferedReader (новый InputStreamReader (System.in)") внутри цикла... Спасибо всем!
Ваш код на самом деле прекрасен, и он работает для меня на Mac OSX Java 1.6.0. Я внес несколько незначительных изменений:
public static void main(String[] args) {
InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(isReader);
while (true) {
try {
String inputStr = null;
if ((inputStr = bufReader.readLine()) != null) {
System.out.println(inputStr);
} else {
System.out.println("input is null");
return; //end on first null
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Я бегу:
java Test.java < data.txt
И он выводит:
111111111
111111112
111111113
input is null
Как вы сделали свой входной файл? Возможно, ваши окончания строк нестандартны?
Вот ваш код немного почистил:
public static void main(String[] args) {
BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));
String inputStr = null;
try {
while ((inputStr = bufReader.readLine()) != null) {
System.out.println(inputStr);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("end of file");
}
java -classpath ../src test.TestProgram < cat filename