gpt4 book ai didi

java - 一次从命令行读取多行输入

转载 作者:行者123 更新时间:2023-12-01 11:12:39 32 4
gpt4 key购买 nike

我需要一个简单的类来一次读取多行输入。例如,从缓冲区一次读取这两行:

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]);
}

最佳答案

它没有第一个字符,因为第一个字符作为第一次 read() 调用的结果保存在 avail 中。然后,您将创建一个缓冲区,其大小为第一个字符的 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")));
}
}
}

关于java - 一次从命令行读取多行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32170094/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com