我的一个输入被跳过了

时间:2016-11-13 09:21:32

标签: java

我有一个赋值,我需要使用带有抛出异常的BufferedReader,System.in.read()和带有catch和try的System.in.read()。 这就是我到目前为止所拥有的。

import java.io.*;

public class Test {

    public void Bufferedreader() throws IOException {
        BufferedReader In = new BufferedReader (new InputStreamReader(System.in));
        String expr = new String();
        System.out.print("Input:  ");
        expr = In.readLine();
        System.out.println("Output: " + expr);
        System.out.println("------------------------------------------");
    }


    public void throwexception() throws IOException {
        int Eingabe=20;
        System.out.print("\nInput");
        Eingabe=System.in.read();
        System.out.println("\n" + (char)Eingabe);
        System.out.println("------------------------------------------");
    }

    public void Exception() {
        int i=32;
        System.out.print("\nEingabe ");

        try {
            i=System.in.read();
        } catch (java.io.IOException e) {
            System.out.println("Eingabefehler "+ e);
        }

        System.out.println("\n" + (char)i);
        System.out.println("------------------------------------------");

    }

    public static void main(String[] args) throws Exception 
    {
        Test method = new Test();
        method.Bufferedreader();
        method.Exception();
        method.throwexception();
    }
}

BufferedReader工作正常,System.in.read()输入也是如此,但总是跳过第三个输入。两个System.in.read分别工作,但我不能让两个System.in.read()一起工作。

这是输出的样子:

Input:  5

Output: 5

------------------------------------------

Input 5

5

------------------------------------------

Input

-----------

提前致谢

1 个答案:

答案 0 :(得分:1)

System.in.read()从输入流中读取下一个数据字节。

因此,当您输入 method.Exception()中的第二个输入时,输入流中实际上有两个字符(如果您使用的是三个字符)。第二个字符(可能是换行符)由第三个(最后一个)read()读取,程序结束。

尝试重载版本的read()方法:read(byte [] b) 从输入流中读取一些字节并将它们存储到缓冲区数组b