我有一个赋值,我需要使用带有抛出异常的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
-----------
提前致谢
答案 0 :(得分:1)
System.in.read()从输入流中读取下一个数据字节。
因此,当您输入 method.Exception()中的第二个输入时,输入流中实际上有两个字符(如果您使用的是三个字符)。第二个字符(可能是换行符)由第三个(最后一个)read()读取,程序结束。
尝试重载版本的read()方法:read(byte [] b) 从输入流中读取一些字节并将它们存储到缓冲区数组b
中