我遇到了有关System.in.read()的问题。我想打印粘贴到控制台的所有内容。 我的代码如下所示:
import java.io.IOException;
public class printer {
public static void main(String[ ] args) {
int i;
try {
while ((i = System.in.read()) != -1) {
char c = (char)i;
System.out.print(c);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
问题在于,如果您将三行粘贴到控制台中,程序将打印两行,但不会打印第三行。这是为什么?如果我按下输入但是在第二行和第三行之间有一个巨大的空间,它会打印第三个。
我还尝试将每个字符串存储在字符串中,然后在循环后打印整个字符串,但循环永远不会结束。是他们停止这个特定循环的方法(我不知道用户将粘贴多少行)
答案 0 :(得分:1)
您的应用会回显您在控制台中输入(或粘贴)的所有行。问题是,游戏机已成为过去,它们应该逐行完成。这意味着您的应用仅在读取新行字符后打印,因为System.in.read
阻止。
您粘贴的文本已包含两个换行符,但最后一行缺少此分隔符。这是您要发布的内容,其中<nl>
表示换行符:
line1<nl>line2<nl>line3
如果你去你的文本编辑器,粘贴到那里,在最后添加一个额外的换行符,然后用&#34;再选择全部&#34;菜单,你会看到最后一行。