没有报错,但是显示下标出界了
import java.util.Scanner;
public class zy {
public static void main(String[] args) {
int[][] intArray;
intArray=new int[3][2];
int[] n=new int[3];
int[] m=new int[3];
Scanner s=new Scanner(System.in);
for(int i=0;i<intArray.length;i++) {
System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
n[i]=s.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
m[i]=s.nextInt();
}
intArray[0][0]=n[1];
intArray[0][1]=m[1];
intArray[1][0]=n[2];
intArray[1][1]=m[2];
intArray[2][0]=n[3];
intArray[2][1]=m[3];
int sum=0,num=0,pj=0;
for(int i=0;i<intArray.length;i++) {
sum=sum+intArray[i+1][0];
System.out.println("语文总成绩"+sum);
pj=sum/3;
System.out.println("语文平均成绩"+sum);
num=num+intArray[i+1][1];
System.out.println("数学总成绩"+num);
pj=num/3;
System.out.println("数学平均成绩"+num);
}
}
}
正在回答 回答被采纳积分+1
同学你好,数组下标范围为:0~数组长度减一,代码中会出现下标越界的地方有两个,如下
1、m、n数组下标范围为0~2,所以m[3]、n[3]会出现数组下标越界异常。
2、intArray[i][j]:i 范围为0~2,j 范围为0~1,而计算总成绩的循环中i+1最大为3,也会出现数组下标越界异常。
代码修改建议:
1、同学可直接在第一个循环中为intArray数组赋值,可不单独定义m、n数组。
2、代码中将输出语句及pj定义在第二个数组中,每执行一次循环都会计算一次平均成绩,并执行输出语句效果如下:
建议同学将输出语句及计算平均成绩放在循环外面,修改后的代码如下:
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星