2011-11-12 15 views
1

ファイルから情報を読み出すために呼び出すことができるブールメソッドを記述しました。特定の例外がスローされた場合、メソッドはブール値 "false"を返す必要があります。そうでなければ、値 "true"を返すべきです。ただし、このメソッドは何があっても常に値「true」を返します。実際に読み取られるファイルには、最初の行(週番号を表す)に数字があり、残りの行は、各行の1人の患者の治療情報で構成されています。私のコードは次のとおりです。メソッド(Java)から適切なブール値を得ることができません

public boolean readTreatmentsFromFile(String filename) { 
    boolean value = true; 
    try { 
    FileReader textFileReader = new FileReader(filename); 
    BufferedReader textReader = new BufferedReader(textFileReader); 

    System.out.println("READING TREATMENTS FROM FILE: " + filename); 

    int week = Integer.parseInt(textReader.readLine()); 

    if (week != weekNumber) { 
     throw new ArithmeticException(); 
    } 

    String post = textReader.readLine(); 

    while(post != null) { 
     addPost(post); 
     if (!addPost(post)) 
     value = false; 
     post = textReader.readLine(); 
    } 
    textReader.close(); 
    } 
    catch (ArithmeticException exception) { 
    System.out.println("Invalid week number in the file: " + filename); 
    value = false; 
    } 
    catch (FileNotFoundException exception) { 
    System.out.print("The file cannot be located"); 
    value = false; 
    } 
    catch (IOException exception) { 
    System.out.print("Cannot read the file:" + filename); 
    value = false; 
    } 

    return value; 
} 

を任意の情報、それは私に適切なブール値の結果を与えるために、私は順番にコードを変更する必要がありますどのようにと大幅に高く評価されます!

+0

例外はありますか? –

+0

実際、出力を見ると、スローされる例外は実際にはwhileループで使用するaddPostメソッドからのものであることがわかります。私のコードをもっと見てみると、私はこれを理解できるかどうかを見てみましょう。 – Kristian

+0

こんにちは。私は今、addPost(配列にポストを追加するメソッドであり、ブール値も返すメソッド)によってExceptionがスローされるという事実を説明しようとしました。さて、私は適切なブール値の出力を取得します。ただし、何らかの理由で、このメソッドに関連付けられているExceptionメッセージが2回出力されます。これを引き起こす可能性のあるアイデアは何ですか? – Kristian

答えて

3

私はこれを考えます:変数 'result'を返します。デフォルトはfalseです。成功した場合にのみtrueに設定します。以下を参照してください(コード自体はデバッグしていないことに注意してください)。

public boolean readTreatmentsFromFile(String filename) { 
    boolean result = false; // pessimistic default 

     try { 
      FileReader textFileReader = new FileReader(filename); 
      BufferedReader textReader = new BufferedReader(textFileReader); 

      System.out.println("READING TREATMENTS FROM FILE: " + filename); 

      int week = Integer.parseInt(textReader.readLine()); 

      if (week != weekNumber) { 
       throw new ArithmeticException(); 
      } 

      String post = textReader.readLine(); 

      while(post != null) { 
       addPost(post); 
       post = textReader.readLine(); 
      } 
      textReader.close(); 
      result = true; // SUCCESS! 
     } 
     catch (ArithmeticException exception) { 
      System.out.println("Invalid week number in the file: " + filename); 
     } 
     catch (FileNotFoundException exception) { 
      System.out.print("The file cannot be located"); 
     } 
     catch (IOException exception) { 
      System.out.print("Cannot read the file:" + filename); 
     } 

     return result; 
    } 
+0

ありがとう!これは、コードを少し「クリーナー」にします:) – Kristian

関連する問題