请问代码是哪里出错了导致学生序号始终为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回答

好帮手慕小尤

2020-05-29

同学你好,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并在循环中计算总成绩。修改后代码如下所示:

http://img.mukewang.com/climg/5ed0aba5092de55107770697.jpg

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

http://img.mukewang.com/climg/5ed0ac5009a7a54f06630652.jpg

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

0

0 学习 · 16556 问题

查看课程