2016-03-18 8 views
0

区切り文字を使用してテキストファイルをバイナリツリーに読み込もうとしています。私はバイナリツリーにそれを読み取ろうとすると、私は配列の範囲外のerropackage病院を取得します。以下のコードを使用して、分割コードjava.lang.ArrayIndexOutOfBoundsExceptionに固執します:テキストファイルをバイナリツリーに読み込もうとするときに4を返します

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException;` 

public class main { 

    public static void main(String args[]) throws IOException 
    { 
     BufferedReader in = new BufferedReader(new FileReader("patient.txt")); 
     String line; 

     BinaryTree hospital = new BinaryTree(); 

     while ((line = in.readLine()) != null) { 
      String[]text = line.split(","); 
      hospital.insert(text[0], text[1], text[2], text[3], text[4]); 
     } 
     in.close(); 

    } 
} 

enter image description here

+2

あなたがここにあなたの 'patient.txt'ファイルを投稿する必要があり – Ramanlfc

+1

挿入する前にtext''の長さを確認してください。そうでなければ教えるのは非常に難しいです。 – user2004685

+0

@Teemo質問を編集し、テキストファイルを含めてください。 – user2004685

答えて

3

変更。 limitパラメータを使用しない場合、デフォルトでsplitメソッドは空の要素を削除します。 -1パラメータでこの問題は解決されます。

String[] text = line.split(",", -1); 
+0

ありがとう、それは今動作します! – Teemo

+0

@ Teemoいくつかの場所でテキストファイルの4番目のコンマの後にテキストがないようです。この問題はこれで解決できます。 – user2004685

+1

"デフォルトでは、splitメソッドは空の要素を削除します。正しいものではありません。 'split'は空の要素を削除するのではなく、末尾の要素だけを削除します。中間または開始時の空の要素は削除されません。 – Pshemo

関連する問題