0

なぜこの単一の文字を読むことができないのですか?

char c = 'Y';
    while(c == 'y' || c == 'Y'){
        //stuff happens..
    }
    c = (char)System.in.read();   <----error

「未処理の例外タイプIOException」というコンパイルエラーが発生します

4

2 に答える 2

3

コードをtry/catchブロックでラップする(または)throws IOExceptionメソッドシグネチャで定義する。チェックされたすべての例外は、例外をキャッチまたはスローする必要があります。

例:

 try
    {
      c = (char)System.in.read();  
    }catch(IOException ioe)
    {
   //Your catch logic
    }
于 2012-08-03T19:00:44.030 に答える
0

これを解決するには、2つのオプションがあります。

  1. 以下に示すように、try-catchステートメントを使用して例外を処理します。

    char c = 'Y';
    while(c == 'y' || c == 'Y'){
        //stuff happens..
    }
    try {
    
        c = (char)System.in.read();
    
    } catch (IOException e) {
    
        e.printStackTrace();//or however you choose to handle this
    }
    

クラスのパッケージステートメント(存在する場合)の下に、次のようなインポートステートメントを追加します。

        import java.io.IOException;

2.関数の後にthrows句を追加して、関数がチェックされた例外をスローする可能性があることを示します。この場合、呼び出し元の関数で例外を処理することをお勧めします。

例:関数sample()がtest()を呼び出すとします。

public static void test() throws IOException {

    char c = 'Y';
    while(c == 'y' || c == 'Y'){
        //stuff happens..
    }
    c = (char)System.in.read();

}

クラスのパッケージステートメント(存在する場合)の下に、次のようなインポートステートメントを追加します。

        import java.io.IOException;

ケース2の場合、sample()で例外を処理できます。そうでない場合、例外(発生した場合)は、処理されるまで上方に伝播します。

于 2012-08-03T23:17:02.270 に答える