私は、コンソールと異なる順序で出力することInputStreamを使用してから入力を読み取る必要があります

FilipKovac:

私は、このようにそれを実行しようとしました、そして、それは働いていません。

  try (Reader reader = new BufferedReader(new InputStreamReader(System.in))) {
                Stack<Character> stack = new Stack<>();
                int i = reader.read();
                while(i != -1) {
                    System.out.println("i = " + i + " = " + (char) i);
                    stack.push((char) i);
                    i = reader.read();

                }
                while(!stack.empty()) {
                    System.out.print(stack.pop());
                }
            }

それはしばらく(I!= -1)ループに入ったら、それが無限ループに入りました。私は、私が見つけた、プログラムいったんテキストの最後に到達したこと、が分かった最後のI = 10しかし、Javaドキュメント内Reader.read()は、ファイルの終わりに達すると、それは返すべきだと-1。ことは、私は、(i!= 10)間でループを終了することができますが、私はそれが10を返す、といない理由を-1知りたいです。答えてくれてありがとう

ジェイソン:

場合、これはチェックすることによって固定することができるiが 10に等しくない場合(線の端部がASCIIです)。私たちは、「ABC」のような入力を提供し、私たちが実際に提供しているエンターキーを押したときのn \ ASCをあれば、我々は確認した場合のn \提供されている(10)私たちはループから抜け出すことができます。

while (i != -1 && i != 10) {

}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=349703&siteId=1