我正在使用这样的命令行输入字符串:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
我想拆分这个字符串:
String line = "int t; //variable t
t->a = 0; //t->a does something
return 0;"
像这样:
String[] arr = line.split("\n");
arr[0] = "int t; //variable t";
arr[1] = "t->a=0; //t->a does something";
arr[2] = "return 0";
但是当我运行我的java程序时,split函数只返回:
arr[0] = "int t; //variable t";
它没有返回我上面提到的其他两个字符串,为什么会发生这种情况请解释。
答案 0 :(得分:5)
方法readLine()
将读取输入,直到输入换行符。该新行字符为"\n"
。因此,它无法阅读由String
分隔的"\n"
。
一个解决方案:
您可以使用while
循环阅读这些行并将其存储在ArrayList
中:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
List<String> lines = new ArrayList<String>();
String line;
while ((line = br.readLine()) != null) {
lines.add(line);
}
for (String s : lines) {
System.out.println(s);
}
要停止while
,您必须按 Ctrl + z (或 Ctrl + d 在UNIX中,如果我没错的话。)
答案 1 :(得分:0)
这应该有用!还要确保输入包含\n
String[] arr = line.split("\r?\n")
答案 2 :(得分:0)
从您的评论中,您似乎接受了这样的输入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String line = br.readLine();
System.out.println(line);
} catch (IOException e) {
e.printStackTrace();
}
此处line
代表 已分割 字符串\n
。当您在控制台上按Enter键时,在一行中输入的文本将被捕获到line
。按照我的说法,您只需阅读 一次 ,它只捕获int t;//variable t
,其中没有任何内容可以拆分。