0

次の警告が表示されます

Null passed for nonnull parameter of new java.util.Scanner(Readable) in     
  model.WordCount.getFile(File).

なぜこれを取得するのですか?また、この警告を取り除くにはどうすればよいですか?方法は次のとおりです。

  /**
   * Receives and parses input file.
   * 
   * @param the_file The file to be processed.
   */
  public void getFile(final File the_file) {
    FileReader fr = null;
    try {
      fr = new FileReader(the_file);
    } catch (final FileNotFoundException e) {
      e.printStackTrace();
    }
    Scanner input = null;
    String word;
    input = new Scanner(fr);
    while (input.hasNext()) {
      word = input.next();
      word = word.toLowerCase().
          replaceAll("\\.|\\!|\\,|\\'|\\\"|\\?|\\-|\\(|\\)|\\*|\\$|\\#|\\&|\\~|\\;|\\:", "");
      my_first.add(word);
      setCounter(getCounter() + 1);
    }
    input.close();
  }

FileReaderエラーを回避するために、をnullに初期化する必要がありました。これが警告のきっかけです。

4

1 に答える 1

1

行の場合

fr = new FileReader(the_file);

例外をスローした後、frnull のままになり、スキャナーでは確実に機能しません。それが警告の内容です。

基本的に、例外のスタック トレースを出力することは適切なエラー処理ではないことを示しています。代わりに、初期の例外が発生した場合にメソッドから戻ることを検討する必要があります。または、その 1 行だけでなく、メソッドのすべてのコードの周りに例外処理ブロックを配置することもできます。例外が発生すると、メソッド内のそれ以上のコードが実行されなくなるため、警告も消えます。

于 2013-03-13T06:16:35.583 に答える