有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

无法从方法(Java)获取正确的布尔输出

我写了一个布尔方法,可以调用它从文件中读取信息。如果抛出某些异常,该方法应返回布尔值“false”如果不是,它应该返回值“true”。但是,无论发生什么情况,该方法始终返回值“true”。正在读取的实际文件在第一行中有一个数字(代表周数),其余几行由每行一名患者的治疗信息组成。我的代码如下:

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;
}

任何关于我应该如何修改代码以使其给出正确的布尔结果的信息都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    我会考虑:返回一个变量“结果”,默认为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;
        }