帮我检查哪里出的问题,输出始终是第一个学生的成绩,输到第5个就报错

帮我检查哪里出的问题,输出始终是第一个学生的成绩,输到第5个就报错

import java.util.Scanner;


public class ScoreDemo{


   public static void main(String[] args){


       //定义一个三行两列的整型二维数组intArray


       int[][] intArray=new int[3][2];


       int s1=0,s2=0;


   




       //从键盘输入学生成绩,要求输入顺序与效果图一致


       Scanner sc=new Scanner(System.in);


       for(int i=0;i<intArray.length;i++){


           for(int j=0;j<intArray[i].length;j++){


               System.out.println("请输入第"+(i+1)+"个学生的语文成绩");


               intArray[i][j]=sc.nextInt();


               s1=s1+intArray[i][j];


               System.out.println("请输入第"+(i+1)+"个学生的数学成绩");


               intArray[i][j+1]=sc.nextInt();


               s2=s2+intArray[i][j+1];


           }


       }


       System.out.println("语文总成绩:"+s1);


       System.out.println("语文平均分:"+s1/intArray.length);


       System.out.println("数学总成绩:"+s2);


       System.out.println("数学平均分:"+s2/intArray.length);

   }

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿慧 2020-03-19 14:23:00

同学你好,思路如下:当i=0时,j=0,1,当j=0时需要输入语文成绩,当j=1时需要输入数学成绩。

代码修改如下:

http://img1.sycdn.imooc.com//climg/5e730f86096e4c4406660410.jpg

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

  • 提问者 沧海的腿毛 #1
    可以把两个if语句合成一个吗,直接在输出语句下面定义成绩总和
    2020-03-19 18:32:13
  • 提问者 沧海的腿毛 #2
    省略score那个变量
    2020-03-19 18:32:34
  • 好帮手慕阿慧 回复 提问者 沧海的腿毛 #3
    同学你好,可以把2个if语句合成一个的。同学可以试试看。
    2020-03-19 18:53:50
秃就秃吧 2020-03-19 12:04:40

以下为解释。望采纳。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

at Debug.Avg.main(Avg.java:69)

这是我eclipse给的错误信息。指数组边界超了。就是下面你打的代码的第二行。


               System.out.println("请输入第"+(i+1)+"个学生的数学成绩");

               intArray[i][j+1]=sc.nextInt();

              s2=s2+intArray[i][j+1];


当j=1时,j+1=2,。此时就指向了第三列。而你这数组是两列。就超范围。不要j+1,j就行了。


以下。是我打的代码。成功实现,你可以参考下。

mport java.util.Scanner;

public class ScoreDemo{

   public static void main(String[] args){

       //定义一个三行两列的整型二维数组intArray

      int[][] intArray=new int[3][2];


       //从键盘输入学生成绩,要求输入顺序与效果图一致

      Scanner sc=new Scanner(System.in);

      for(int i=0;i<intArray.length;i++){

          for(int j=0;j<intArray[i].length;j++){

              if(j%2==0){

                  

                  System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");

                  intArray[i][j]=sc.nextInt();

                  //System.out.println(intArray[i][j]);

                  //System.out.println();

              }

              else

              {

              

                  System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");

                  intArray[i][j]=sc.nextInt();

                  //System.out.println(intArray[i][j]);

                  //System.out.println();

              }

          }

      }


       //求语文的总成绩和平均分

      int sum=0;

      for(int k=0;k<intArray.length;k++){

          sum=sum+intArray[k][0];

      }

      int average=(sum/intArray.length);

      System.out.println("语文的总成绩为:"+sum);

      System.out.println("语文的平均分为:"+average);

       //求数学的总成绩和平均分

      int sum2=0;

      for(int m=0;m<intArray.length;m++){

          sum2=sum2+intArray[m][1];

      }

      int average2=(sum2/intArray.length);

      System.out.println("语文的总成绩为:"+sum2);

      System.out.println("语文的平均分为:"+average2);


   }

}


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师