計算を行ったり、出力を表示したりする前に、すべての生徒の情報を読んでください。3つの試験のスコアが0〜50ポイントであり、入力時に最終が0〜100ポイントであることを確認します。必要に応じて簡単に更新できるように、最小値と最大値を定数として宣言しました。無効な場合は、エラーメッセージを表示し、ユーザーがその無効なスコアを再入力できるようにします。すべての学生情報が読み込まれたら、各学生の名前をLASTNAME、FIRSTNAME(すべて大文字)の形式で表示し、学生の試験のパーセンテージ(すべての試験の合計と最終/可能な合計)を小数点以下1桁まで、および学生の最終成績に基づいて表示します。次のパーセンテージ:
90-100 A、80-89.9 B、70-79.9 C、60-60.9 D、60F未満
これは私がすでに入力したものですが、いくつかのエラーが発生し、値を正しく割り当てているかどうかわかりません。
import java.util.*;
import java.text.*;
public class Proj4 {
public static void main(String[] args){
Scanner s= new Scanner(System.in);
String input;
String again = "y";
int [] exams = new int[4];
int student = 1;
do
{
String [] names = new String[student];
System.out.print("PLease enter the name of student" + student );
names[student-1] = s.nextLine();
for ( int i = 1; i < exams.length; i++){
if(i==4){
System.out.print("Please enter score for Final Exam: ");
}
System.out.print("Please enter score for Exam" + i);
exams[i] = s.nextInt();
if((exams[1]<0||exams[1]>50)||(exams[2]<0||exams[2]>50)||(exams[3]<0||exams[3]>50)){
System.out.println("Invalid enter 0-50 only...");
System.out.print("Please re-enter score: ");
exams[i] = s.nextInt();
}
else if(exams[4]<0||exams[4]>100){
System.out.println("Invalid enter 0-100 only...");
System.out.print("Please re-enter score: ");
exams[i] = s.nextInt();
}
}
System.out.println("do you wish to enter another?");
again = s.nextLine();
student++;
}while (again.equalsIgnoreCase ("y"));
}
}
これはエラーメッセージです:
スレッド「main」の例外java.lang.ArrayIndexOutOfBoundsException:4 at Proj4.main(Proj4.java:32)
しかし、32行目は単なる}であるため、混乱します。それが何を意味するのか正確にはわかりません。おそらく、配列の入力の1つの長さを短くする必要があることはわかっていますが、どちらか、またはあるかどうかはわかりません。それよりも間違っています。
編集:
申し訳ありませんが、私の質問です。問題を理解したり、必要な出力を取得するために私が間違っているかどうか、または何をしているかを教えていただけませんか。