所以问题是我想要读取字符串的多行并将它们放入ArrayList中,只要用户不输入任何内容就不会转到下一行。
以下是示例输入的样子:
hello
I am John
这是我试过的代码,但它没有用。 (错误是:“字符串索引超出范围:0”。)
Scanner input = new Scanner(System.in);
ArrayList<String> text = new ArrayList<>();
while (true) {
String temp = input.nextLine();
if (temp.charAt(0) == '\n') {
break;
}
text.add(temp);
}
您可以尝试使用if (temp.isEmpty())
,因为Scanner
会读取一个空字符串。
Scanner input = new Scanner(System.in);
List<String> text = new ArrayList<>();
while (true) {
String temp = input.nextLine();
if (temp.isEmpty()) break;
text.add(temp);
}
nextLine()
删除了行终止符。见Javadoc。
你应该测试该行为空。
你可以使用https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html
并且方法readLine而不是Scanner。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws IOException {
List<String> text = new ArrayList<>();
System.out.println("Start input lines, press enter to stop: ");
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
String line;
for(;;) {
line = reader.readLine();
if(null == line || line.length() == 0)
break;
text.add(line);
}
}
System.out.println("Echo: ");
text.stream().forEach((String str)-> {
System.out.println(str);
});
}
}