-1

この次のエラー「Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at Bank.main(Bank.java:42) <--- この行は、次のコード行を参照している」というエラーの原因を突き止めているようです「banklist.add(new Bank(values[0]....」として開始

public static void main (String[] args) throws FileNotFoundException 
    {
        FileReader fr = new FileReader("Bank Data.txt");
        BufferedReader reader = new BufferedReader(fr);
        List<Bank> banklist = new ArrayList<Bank>();
       try { 
        String line;
        while ((line = reader.readLine()) != null)
            {
            String[] values = line.split("/t"); // Split on "tab"

            banklist.add(new Bank(values[0], Integer.parseInt(values[1]),Integer.parseInt(values[2]),Integer.parseInt(values[3]),Integer.parseInt(values[4]), values[5])); // Create a new Player object with the values extract and add it to the list
4

3 に答える 3

1

最も考えられる説明は、ファイルにタブのない行があることです。おそらく最後の行は空です。

考えられる解決策は、防御的なプログラミングを行い、配列の長さを確認してから、配列 [1] として直接インデックスを作成することです。

于 2013-09-26T06:23:15.310 に答える
0

/tではなく分割しました\t。スラッシュではなくバックスラッシュに注意してください。

行にはおそらく/tシーケンスが含まれていないため、コードが期待するすべての単語を取得することはできません。

于 2013-09-28T17:45:49.000 に答える
0

間違った表現を使用しています。

以下の解決策を見つけてください..

       while ((line = reader.readLine()) != null) {

            String regexp = "[\\s,;\\t]+";
            String[] values = line.split(regexp);

            banklist.add(new Bank(values[0],
                    Integer.parseInt(values[1]),
                    values[2],
                    values[3],
                    Integer.parseInt(values[4]),
                    values[5])
            );



        }
于 2013-09-26T08:47:20.447 に答える