请问代码是哪里出错了导致学生序号始终为1,并且在输入第四个数字的时候报错
来源:1-8 编程练习
Popeye_Popi
2020-05-29 10:31:06
package com.imooc.array;
import java.util.Scanner;
public class TestArray {
public static void main(String[] args) {
// 定义一个三行两列的整型二维数组intArray
int[][] intArray;
intArray=new int[3][2];
//从键盘输入学生成绩,要求输入顺序与效果图一致
Scanner sc=new Scanner(System.in);
int i,j;
for(i=0;i<intArray.length;i++) {
for(j=0;j<intArray[i].length;j++) {
System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
intArray[i][j]=sc.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
intArray[i][j+1]=sc.nextInt();
}
}
//求语文的总成绩和平均分
int sumM=0,sumC=0;
sumC+=intArray[i][0];
sumM+=intArray[i][1];
int avgM=0,avgC=0;
avgC=sumC/3;
avgM=sumM/3;
System.out.println("语文的总成绩为:"+sumC);
System.out.println("语文的平均分为:"+avgC);
System.out.println("数学的总成绩为:"+sumM);
System.out.println("数学的平均分为:"+avgM);
}
}
1回答
同学你好,1. intArray[i].length长度为2,当运行到内循环时会循环两次,,在展示是第几个学生是(i+1),并且内循环并为结束,无法运行i++,则i的值为0,所以学生序号为1。
2. 设置的二维数组中二维长度为2,则内循环会循环两次,在循环第二次时,j=1(则)intArray[i][j+1]时,没有intArray[0[2]此下标导致java.lang.ArrayIndexOutOfBoundsException异常(数组下标越界)。则建议同学修改为:j<intArray[i].length-1并在循环中计算总成绩。修改后代码如下所示:

3. 建议同学采用一个循环的方式实现,在接收从键盘输入的成绩的同时完成求和,计算总成绩。如下图所示:

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题