请老师检查并帮忙提供更有效简洁的答案或者思路!谢谢

来源:1-8 编程练习

C_LANNAD

2019-12-03 10:45:02

import 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);

   int sum1=0,sum2=0,avg1=0,avg2=0;

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

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

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

           if(j==0)

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

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

            

           else

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

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

            

            if(j==0){sum1+=intArray[i][0];

            avg1=sum1/3;}

            sum2+=intArray[i][1];

            avg2=sum2/3;

        }

    }


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

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

       System.out.println("语文平均分:"+avg1);


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

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

       System.out.println("数学平均分:"+avg2);


   }

}


写回答

2回答

芝芝兰兰

2019-12-03

同学你好。代码总体完成的不错呢,再接再厉~

1、代码中可以优化的点,内层for循环内,一个循环中的j是相同的,所以不需要判断两次,直接在nextInt接收到值后,按不同的课程累加即可。

2、我们使用二维数组的列代表了哪些课程,标号从0开始,在题目的描述中,0代表语文成绩、1代表数学成绩。由于这里的二维数组中不能存储课程名,所以只能表示出确定个数的课程,然后在代码中判断是哪一列,借此来知道是对应哪个课程。

3、综上所述,如果只是想要有几门确定的课程数,还用二维数组存储的方式的话,只需要在if 后使用else if 接着判断即可。例如三门课程,需要3行3列的数组,可以修改为:

for(int i=0;i<intArray.length;i++){
        for(int j=0;j<intArray[i].length;j++){
           if(j==0){ 
               System.out.println("请输入第"+(i+1)+"个同学的语文成绩:");
               intArray[i][j]=sc.nextInt();
               sum1 += intArray[i][j];
           }else if(j==1){
               System.out.println("请输入第"+(i+1)+"个同学的数学成绩:");
               intArray[i][j]=sc.nextInt();
               sum2 += intArray[i][j];
           }else{
               System.out.println("请输入第"+(i+1)+"个同学的英语成绩:");
               intArray[i][j]=sc.nextInt();
               sum3 += intArray[i][j];
           }
        }
}
       //求语文的总成绩和平均分
       System.out.println("语文总成绩:"+sum1);
       System.out.println("语文平均分:"+sum1/intArray.length);

       //求数学的总成绩和平均分
       System.out.println("数学总成绩:"+sum2);
       System.out.println("数学平均分:"+sum2/intArray.length);
       
       //求英语的总成绩和平均分
       System.out.println("英语总成绩:"+sum3);
       System.out.println("英语平均分:"+sum3/intArray.length);


如果解答了同学的疑问,望采纳~

祝学习愉快~

0

C_LANNAD

提问者

2019-12-03

这里只有2门课程  所以可以用if(J==0)还可以用 如果大于2门课程程序就不适用了 有能满足任意课程数通用的代码吗

0

0 学习 · 11489 问题

查看课程