У меня есть задание, в котором говорится, что "вы можете предположить, что вход будет поступать со стандартного ввода в потоке. Вы можете предположить, что маркеры имеют доступ ко всем стандартным библиотекам".
Как мне перейти на чтение нескольких строк/входов и сохранение всех входов в виде одной строки, а затем вывод этой строки из функции?
В настоящее время это моя функция, но она не работает должным образом, на одном этапе она не читала больше одной строки, и теперь она вообще не работает.
public static String readFromStandardIO() {
String returnValue = "";
String newLine = System.getProperty("line.separator");
System.out.println("Reading Strings from console");
// You use System.in to get the Strings entered in console by user
try {
// You need to create BufferedReader which has System.in to get user
// input
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
String userInput;
System.out.println("Enter text...\n");
while (!(reader.readLine() == reader.readLine().trim())) {
userInput = reader.readLine();
returnValue += userInput;
}
System.out.println("You entered : " + returnValue);
return returnValue;
} catch (Exception e) {
}
return null;
}
Спасибо за помощь!
Проблема в том, что вы вызываете reader.readLine()
три раза, так что в итоге вы сравните две совершенно разные строки и затем записываете еще одну.
Кроме того, он, как правило, не одобрял сравнение строк с использованием == (поскольку сравнение Objects with == спрашивает, являются ли они одним и тем же фактическим объектом (да, Java прощается в этом отношении со строками, но он все еще нахмурился)).
Вам нужно будет сделать что-то более сродни:
public static String readFromStandardIO() {
String returnValue = "";
System.out.println("Reading Strings from console");
// You use System.in to get the Strings entered in console by user
try {
// You need to create BufferedReader which has System.in to get user
// input
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String userInput;
System.out.println("Enter text...\n");
while (true) {
userInput = reader.readLine();
System.out.println("Finally got in here");
System.out.println(userInput);
returnValue += userInput;
if (!userInput.equals(userInput.trim())) {
break;
}
}
System.out.println("You entered : " + returnValue);
} catch (Exception e) {
}
return returnValue;
}