首页 > 解决方案 > system.input.read() != -1 循环永不停止

问题描述

我正在编写一段代码,它接受一个输入字符串并只输出选定的字符。我被要求使用 system.input.read 否则我只会使用 scan 或类似的东西。这是我的代码:

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”启动字符串——如果它不在循环中,它将永远不会执行打印语句。因此,据我所知,可能只有一个问题:循环从未停止。

但是循环应该在到达输入字符串中的最后一项后停止。这

System.input.read() 

方法假设在读取所有条目并结束循环后返回 -1(我将i != -1其作为结束条件),但显然它没有。

谁能向我解释我做错了什么以及为什么这是错误的。这太奇怪了,我再也不想遇到同样的问题了。

标签: javawhile-loopjava-io

解决方案


推荐阅读