在Java中阅读字符

时间:2015-10-25 04:15:58

标签: java

我在Windows的BlueJ工作。我尝试使用以下方法在Java中读取一个字符:

import java.util.Scanner;
import java.io.*;

public class Test{

    public static void main(String args[]) {
        InputStreamReader instream = new InputStreamReader (System.in);
        BufferedReader stdin = new BufferedReader(instream);
        char c = (char) stdin.read();
    }
}

编译时,编译器发出错误:

  

必须捕获或声明未报告的异常java.io.IOException;

我不明白这个问题。任何人都可以建议我正确地做到这一点。

3 个答案:

答案 0 :(得分:3)

stdin.read()可能会抛出IOException,这是错误消息告诉您的内容。您需要通过声明您的main方法将其抛出来处理此问题:

public static void main(String args[]) throws IOException {
    // ...
}

或使用IOException / main这样处理try内的catch

public static void main(String args[]) {
    try {
        InputStreamReader instream = new InputStreamReader (System.in);
        BufferedReader stdin = new BufferedReader(instream);
        char c = (char) stdin.read();
    } catch (IOException ex) {
        // handle error in some way
        ex.printStackTrace(); 
    }
}

答案 1 :(得分:0)

抓住例外。

public static void main(String args[]) {
    try{
        InputStreamReader instream = new InputStreamReader (System.in);
        BufferedReader stdin = new BufferedReader(instream);
        char c = (char) stdin.read();
    }catch(IOException ioe){
        ioe.printStackTrace();
        // write your handling
    }catch(Exception err){
        err.printStackTrace();
   }
}

//您可以使用catch块捕获相关的多个异常。如果您不确定特定异常,请捕获泛型异常。应首先处理所有Exception子类,并在最后捕获泛型 Exception

答案 2 :(得分:0)

使用try catch块处理代码中的IOException。你可以这样做。

import java.util.Scanner;
import java.io.*;

public class Test {

    public static void main(String args[]) {
        try {

            InputStreamReader instream = new InputStreamReader(System.in);
            BufferedReader stdin = new BufferedReader(instream);
            char c = (char) stdin.read();
        } catch (IOException ex) {
            System.out.println("Error : " + ex.getMessage());
        }
    }
}