私はjavaの本を手に入れ、Arraysに関するいくつかの練習をしています。なぜこれが範囲外であるのか理解できる人はいませんか? 練習は3つのクラスを作成することです:CollegeCourse;主な方法で学生とInputGrades。私はそれを実行すると、配列が範囲外であることを示すまでうまく行く。私が第3の生徒のために第2のコースに入ろうとしているときにクラッシュする。ArrayOutOfBoundsエラーが発生するのはなぜですか?
public static void main(String[] args) {
String info = null;
int infoInt = 0;
char infoChar = 0;
Scanner input = new Scanner(System.in);
CollegeCourse[] courses = new CollegeCourse[2];
for(int i = 0; i < courses.length; i++) {
courses[i] = new CollegeCourse();
}
Student[] students = new Student[3];
for(int i = 0; i < students.length; i++) {
students[i] = new Student();
}
System.out.println("Welcome to Java Programming.\n Professor, enter your students' info below.");
for(int i = 0; i < students.length; i++) {
System.out.print("\nEnter student ID >>> ");
infoInt = input.nextInt();
input.nextLine();
students[i].setStudentID(infoInt);
for(int j = 0; j < courses.length; j++) {
System.out.print("Enter course ID >>> ");
info = input.nextLine();
courses[j].setCourseID(info);
System.out.print("Enter credit hours >>> ");
infoInt = input.nextInt();
input.nextLine();
courses[j].setCreditHours(infoInt);
System.out.print("Enter letter grade >>> ");
info = input.nextLine();
info = info.toUpperCase();
info.toCharArray();
infoChar = info.charAt(0);
courses[i].setLetterGrade(infoChar);
}
}
}
私の出力は次のようになります。補正は次のようになりますとなるよう、
courses[i].setLetterGrade(infoChar);
カウンターではなくj
のi
です:
Welcome to Java Programming.
Professor, enter your students' info below.
Enter student ID >>> 1468
Enter course ID >>> cis 210
Enter credit hours >>> 3
Enter letter grade >>> b
Enter course ID >>> smm 310
Enter credit hours >>> 5
Enter letter grade >>> a
Enter student ID >>> 1449
Enter course ID >>> cis 210
Enter credit hours >>> 5
Enter letter grade >>> a
Enter course ID >>> smm 310
Enter credit hours >>> 5
Enter letter grade >>> a
Enter student ID >>> 1986
Enter course ID >>> cis 210
Enter credit hours >>> 2
Enter letter grade >>> c
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Chapter08Arrays.InputGrades.main(InputGrades.java:48)
このコードをあなたの問題を解決する必要があります示してい実行時に 'InputMismatchException'をスローします。 – progyammer
学生とCollegeCourseの定義は –
@MaheshKshirsagarを与えなければなりません。私はそれらを与えなければならないと思います。これらのクラスのメソッドが何をしているのか想像することができます。質問に不必要な長さを追加するだけです – ParkerHalo