【问题标题】:How to fix 'ava.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1' error in Java如何修复 Java 中的“ava.lang.ArrayIndexOutOfBoundsException:Index 1 out of bounds for length 1”错误
【发布时间】:2020-02-04 08:29:49
【问题描述】:

我正在尝试使用从 .txt 文件中提取的数据创建“PhoneEntry”类的实例。 .split() 似乎有效地创建了一个数组(信息),其中包含文档中每一行的三个值(名字、姓氏和电话号码),但是当我尝试创建时出现越界错误“PhoneEntry”类的一个实例,使用 array[index] 公式调用每个值。我设法打印了 info 数组中的所有索引,因此它们包含正确的值,但是无法使用它们创建新的“PhoneEntry”。

到目前为止我...

1) 打印所有值以确保文件读取器循环在正确组装“信息”数组时完成其工作

2) 打印出信息数组的长度。它返回五个“3”和一个“1”。应该只有 5 个数组,因为 phonebook.txt 中只有 5 行内容,但可能有一个秘密 '/n' 或其他东西,如果是,我将如何删除该字符?

PhoneBook()   // constructor for the phone book
    {
        try {
            BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Users\\HP\\Desktop\\javaprojects\\phonebook2\\phonebook.txt");
            String line;
            try {
                while ((line = bufferedReader.readLine()) != null) {
                    String[] info = line.split(" ");
                    System.out.println(info[0] + " " + info[1] + " "+info[2]);
                    phoneBook.add(new PhoneEntry(info[0], info[1], info[2]));
                }
                bufferedReader.close();
            } catch (IOException e2){
                e2.printStackTrace();
            }
        } catch (FileNotFoundException e1){
            e1.printStackTrace();
        }


    }

.txt 文件:


Ali Katt (312)223-1937
Ima Knob (860)399-3044
Jo King (913)883-2874
Stew Pid (651)698-4631
Ug Lee (815)439-9271

确切的错误信息是:

java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at PhoneBook.<init>(PhoneBook.java:16)
    at PhoneBookTester.main(PhoneBookTester.java:10)

第 16 行引用了 print 语句,但实际上所有值都正确打印出来了,包括最后一个索引 (2)。在 print 语句出现之前,错误是指新的 phoneEntry。

我需要它来实际创建一个“PhoneEntry”实例并将其添加到数组列表“phoneBook”中

【问题讨论】:

标签: java oop bluej


【解决方案1】:

您的程序假定每行始终至少有 2 个空格。

如果有一个空行或其中包含少于 2 个空格的行,您将尝试检索 info 中不存在的值,因此是 ArrayIndexOutOfBoundsException

if (info.length == 3) {
   System.out.println(info[0] + " " + info[1] + " " + info[2]);
   phoneBook.add(new PhoneEntry(info[0], info[1], info[2]));
}

【讨论】:

    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 2021-12-17
    • 2020-01-31
    相关资源
    最近更新 更多