2017-04-18 10 views
-3

テキストファイルからいくつかのものを読み込もうとしています。 .txtファイルとコードはすべて現在の作業ディレクトリ内にあります。 fInputが初期化されていない可能性があります。これは私のプログラムがキャッチ・ステートメントに向かい、試行ではないからだと私は信じています。ここでオブジェクトが初期化されていない理由がわかりません

は私のコードセグメントである:

Scanner fInput; 
     try { 
      fInput = new Scanner(new File("accountData.txt")); 
     } 
     catch(Exception e) { 
      System.out.println("ERROR: File Not Found."); 
     } 
     while(fInput.hasNext()) { 
      String tempID = fInput.next(); 
      String tempFName = fInput.next(); 
      String tempLName = fInput.next(); 
      String tempPNumber = fInput.next(); 
      String tempEmail = fInput.next(); 

      System.out.println(tempID+""+tempFName+""+tempLName+""+tempPNumber+""+tempEmail); 
     } 

誰もが、私はこれを取得しています理由についていくつかの光を当てますか?ありがとう。

+2

@HovercraftFullOfEels実際には問題はありません。これは、初期化の不足によるコンパイルエラーです。 – Zircon

+0

はい、私たちはそれに光を当てることができます。例外を無視しないでください!例外を出力して何も起こらなかった場合にそのまま続行しますが、まだ*無視しています。それはあなたの問題を直接説明するものではありませんが、それを修正することでコンパイルエラーも修正されます。 – Andreas

+0

@HovercraftFullOfEelsあなたのご意見ありがとうございます。実行可能ファイルの場所へのパスを含めるために.txtファイル名を編集しましたが、同じエラーが発生しています。 –

答えて

0

はい、問題は、tryブロックに例外がスローされた場合、fInputcatchの後では初期化されません。したがって、コンパイラはfInputwhileループに到達するまでに初期化されるという保証はありません。あなたはまだこのような方法でScannerを使用する場合は、次の2つの方法であなたの現在のコードを修正することができます。

  1. tryであなたのループを実行します。

    Scanner fInput; 
    try { 
        fInput = new Scanner(new File("accountData.txt")); 
        while(fInput.hasNext()) { 
         String tempID = fInput.next(); 
         String tempFName = fInput.next(); 
         String tempLName = fInput.next(); 
         String tempPNumber = fInput.next(); 
         String tempEmail = fInput.next();     
         System.out.println(tempID+""+tempFName+""+tempLName+""+tempPNumber+""+tempEmail); 
        } 
    } 
    catch(Exception e) { 
        System.out.println("ERROR: File Not Found."); 
    } 
    
  2. チェックしてヌル安全性を確認してください:

    Scanner fInput = null; //This change is important! 
    try { 
        fInput = new Scanner(new File("accountData.txt")); 
    } 
    catch(Exception e) { 
        System.out.println("ERROR: File Not Found."); 
    } 
    if(fInput!=null) { 
        while(fInput.hasNext()) { 
         String tempID = fInput.next(); 
         String tempFName = fInput.next(); 
         String tempLName = fInput.next(); 
         String tempPNumber = fInput.next(); 
         String tempEmail = fInput.next(); 
         System.out.println(tempID+""+tempFName+""+tempLName+""+tempPNumber+""+tempEmail); 
        } 
    } 
    

これらのいずれかが恐ろしいを避けることができますあなたの例ではです。

+0

非常に感謝しています。説明ありがとう。 –

関連する問題