public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入学生的人数");
int renshu = in.nextInt();
System.out.println("请输入课程的数目");
int courseNum = in.nextInt();
String[] name = new String[renshu];
String[] course = new String[courseNum];
int[][] number = new int[renshu][courseNum];
int[] sum = new int[renshu];
int[] avg = new int[renshu];
String[] str = new String[renshu];
for (int i = 0; i < course.length; i++) {
System.out.println("请定义第" + (i + 1) + "门课程的名字");
course[i] = in.next();
}
for (int i = 0; i < renshu; i++) {
int S = 0;
System.out.println("请输入学生的姓名:");
name[i] = in.next();
String str11 = "";
for (int j = 0; j < courseNum; j++) {
System.out.println("请输入学生" + name[i] + course[j] + "的成绩");
number[i][j] = in.nextInt();
S += number[i][j];
str11 += number[i][j] + "\t";
}
sum[i] = S;
avg[i] = S / courseNum;
str[i] = name[i] + "\t" + str11 + sum[i] + "\t" + avg[i];
}
for (int i = 0; i < sum.length; i++) {
for (int j = 0; j < sum.length; j++) {
if (sum[j] > sum[j]) {
int t1 = sum[j];
String t2 = str[j];
sum[j] = sum[j];
str[j] = str[j];
sum[j] = t1;
str[j] = t2;
}
}
}
System.out.print("学生");
for (int i = 0; i < course.length; i++) {
System.out.print("\t" + course[i]);
}
System.out.print("\t总分\t平均分\t排行榜");
System.out.println();
for (int i = 0; i < renshu; i++) {
System.out.println(str[i] + "\t第" + (i + 1) + "名");
}
}
在for(int j=0;j
你好,
你的代码36行sum[j+1]数组越界了,如sum的length是5,当j=4时,sum[j+1]为sum[5]就会越界。
希望能帮到你。
数组那里越界了 ,看exception。好好检查数组。