我正在编写一个程序来显示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
答案 0 :(得分:1)
您正在按空格将catalognumber
(即输入的第一行)拆分为String
数组。
您稍后假设您的parts
数组将包含4个元素(array
s是基于0的索引)。
因为您的指数等于或高于java.lang.ArrayIndexOutOfBoundsException
的预期尺寸而引发array
。
如果您正在使用IDE,我建议您调试代码并在以下位置设置断点:
String topicarea = parts[0];
然后您应该能够评估parts
(例如,将鼠标悬停在变量上等)并找出确切的问题。
答案 1 :(得分:0)
您应该确保阵列的长度符合您的期望。如果您依赖用户输入,最好先检查一下。