不使用数组时出现java - java.lang.ArrayIndexOutOfBoundsException错误

时间:2014-03-25 22:16:31

标签: java

我正在编写一个程序来显示Dewey Decimal Information。我还没有多少,但我已经收到以下错误:

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:3     在DDC.main(DDC.java:19)

我不明白为什么错误与数组相关

这是我的代码:

// enter a book's catalog number and the program produces a
// list of the information the catalog number provides for the user

import java.util.Scanner;

public class DDC {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        // Prompt the user to enter a catalog number
        System.out.println("Enter the catalog number: ");
        String catalognumber = input.nextLine();
        int strLength = catalognumber.length();

        if (strLength == 15) {
            String[] parts = catalognumber.split(" ");
            String topicarea = parts[0];
            String authorID = parts[1];
            String titleID = parts[3];
            System.out.println("This is a Dewey Decimal Classification(DDC) for Non-fiction");
            System.out.println("Topic Area: "+ topicarea);
            System.out.println("Author Identifier: "+ authorID);
            System.out.println("Title Identifier: " + titleID);
            System.out.println("Thanks for using the Catalog Information Program.");

        } // end if

    } // end main

} // end DDC

2 个答案:

答案 0 :(得分:1)

您正在按空格将catalognumber(即输入的第一行)拆分为String数组。

您稍后假设您的parts数组将包含4个元素(array s是基于0的索引)。

因为您的指数等于或高于java.lang.ArrayIndexOutOfBoundsException的预期尺寸而引发array

如果您正在使用IDE,我建议您调试代码并在以下位置设置断点:

String topicarea = parts[0];

然后您应该能够评估parts(例如,将鼠标悬停在变量上等)并找出确切的问题。

答案 1 :(得分:0)

您应该确保阵列的长度符合您的期望。如果您依赖用户输入,最好先检查一下。