我需要一个简单的类来一次读取多行输入。 例如,从缓冲区一次读取这两行:
b8 b7
g8 g2
此代码仅输入缓冲区中的第一行,而没有第一个字符......
int avail = System.in.read();
byte[] buf = new byte[avail];
System.in.read(buf);
String s = new String(buf);
String[] lines = s.split("\n");
//System.out.println(lines);
for(int i=0; i<lines.length; i++) {
System.out.println(lines[i]);
}
答案 0 :(得分:1)
没有第一个字符,因为第一个字符在第一个avail
调用后保存在read()
中。然后,您将创建一个缓冲区,其大小为第一个字符的ASCII值(不是您想要的缓冲区大小)。
更好的方法是逐行读取输入行BufferedReader
,如下所示:
public class Main {
public static void main(String[] args) throws Exception {
try (BufferedReader input = new BufferedReader(new InputStreamReader(System.in))) {
StringBuilder sb = new StringBuilder();
String line;
while ((line = input.readLine()) != null) {
if ("".equals(line)) break;
sb.append(line).append('\n');
}
System.out.println(Arrays.toString(sb.toString().split("\n")));
}
}
}