2017-12-04 1 views
-1

テキストファイルからデータを読み込み、配列に挿入しようとしていますが、ファイル内の1行の空白は新しい配列が作成されることを意味します。 2本のラインとスキャナを閉じてください。ここでは、テキストファイルには、次のとおりです。スキャナがファイルの終わりを検出するJava

`Test 
test 
test 
Telephone 
Cardiology 

Test Doctor 2 
Test 
20 Test 
Telephone 
Cardiology 
` 


    public Object[][] readData() throws FileNotFoundException{ 
    Scanner sc = new Scanner(new File("DoctorRecordsFile.txt")); 
    String line; 
    int emptyFile = 0 ; 

    int i = 0; 
    int x = 0; 
    String[][] doctor = new String[100][5]; 
    while (emptyFile <= 1){ 
    line = sc.nextLine() ; 

    if ((!line.isEmpty())){ 
     doctor[i][x] = line; 
     System.out.println(doctor[i][x]); 

     x++; 
     emptyFile = 0; 
    } 
    else{ 
     System.out.println("PRE call emptyFile: " + emptyFile); 
     emptyFile++; 
     System.out.println("Post call emptyFile: " + emptyFile); 
    if(emptyFile >= 2){ 
     sc.close(); 
    } 
    else{ 
     i++; 
     x = 0; 
    } 
    } 
    } 
    return new Object[][]{doctor[0]}; 

私は期待して、実際の結果は、スキャナがクローズし、データで読むのをやめ、ここに私のコンソールエラーがあるということである。このために探し

at java.util.Scanner.nextLine(Scanner.java:1540) 
    at medicalsystem.ReadInDoctors.readData(ReadInDoctors.java:35) 
    at medicalsystem.MainMenu.View_Doctor_ButtonActionPerformed(MainMenu.java:193) 
+0

あなたは、単にだけで新しい行 – BlooB

+0

を含む行を探すことができますアクセント記号間のテキストファイルの内容は?私はテキストファイルに2つの空白行がありません。 hasNextLine()で次の行があるかどうかを調べる必要があります。 – TurtlesAllTheWayDown

答えて

0

テキストファイルに空白行が2つ表示されません。入力ファイルに別の行があるかどうかをチェックするのはどうですか?以下のような何か:私はif文でコードを包ん

while (emptyFile <= 1) { 

      if (sc.hasNextLine()) { 
       line = sc.nextLine(); 

       if ((!line.isEmpty())) { 
        doctor[i][x] = line; 
        System.out.println(doctor[i][x]); 

        x++; 
        emptyFile = 0; 
       } else { 
        System.out.println("PRE call emptyFile: " + emptyFile); 
        emptyFile++; 
        System.out.println("Post call emptyFile: " + emptyFile); 
        if (emptyFile >= 2) { 
         sc.close(); 
        } else { 
         i++; 
         x = 0; 
        } 
       } 
      } 
     } 

お知らせ:「もし(sc.hasNextLine()){」

+0

https://pastebin.com/BpBuU6Zxこれは私が今来たものです。無限のループを作り、プログラムをクラッシュさせることはありません。(StackOverFlowの使い方はあまり分かりません。コードを挿入しました。 – rwsender

関連する問題