-1

我似乎无法弄清楚是什么导致了以下错误“线程“主”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

您使用了错误的表达方式。

在下面找到解决方案..

       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 回答
0

你已经分裂/t而不是\t。注意反斜杠而不是正斜杠。

由于您的行可能不包含任何/t序列,因此您不会得到代码所期望的所有单词。

于 2013-09-28T17:45:49.000 回答