Java system.input.read()!=-1循环永不停止
我正在编写一段代码,它接受一个输入字符串并只输出所选的字符。我被要求使用system.input.read,否则我只能通过扫描或类似的方式解决。这是我的密码:Java system.input.read()!=-1循环永不停止,java,while-loop,java-io,Java,While Loop,Java Io,我正在编写一段代码,它接受一个输入字符串并只输出所选的字符。我被要求使用system.input.read,否则我只能通过扫描或类似的方式解决。这是我的密码: import java.io.IOException; public class testing { public static void main(String[] args) throws IOException { int i; String answer = ""; w
import java.io.IOException;
public class testing {
public static void main(String[] args) throws IOException {
int i;
String answer = "";
while ((i = System.in.read()) != -1) {
if (i == 65 || i == 67 || i == 71 || i == 84) {
answer = answer + (char)i;
}
//System.out.println(answer);
}
//System.out.println(answer);
}
}
如果我把
System.out.println(answer);
在while循环中,它会打印内容,但同一语句在while循环外不会执行任何操作,即使我用“12345”启动字符串——如果print语句不在循环中,它将永远不会执行。因此,据我所知,只有一个问题:循环从未停止
但是循环应该在到达输入字符串中的最后一项后停止。
System.input.read()
方法假定在读取所有条目后返回-1并结束循环(我将I!=-1作为结束条件),但显然它没有
请任何人向我解释一下我做错了什么,为什么这是错误的。这太奇怪了,我再也不想出现同样的问题。“读取
:[返回]数据的下一个字节,如果到达流的结尾,则返回-1。”好了,stdin
将打开,直到您显式关闭它。不需要。这取决于终端,但我相信IntelliJ在Windows上,CTRL+D将关闭输入流。System.in
仍处于打开状态,因此用户有可能稍后写入一些值。在这种情况下,应用程序需要等待来自用户的任何数据,或者直到System.In
关闭。“我被要求使用system.input.read”但为什么?这是某种惩罚吗?您可以在最后使用“