老师帮我看看我的代码,感觉实现的方式跟您设计的不一样

老师帮我看看我的代码,感觉实现的方式跟您设计的不一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.Scanner;
public class ScoreDemo{
   public static void main(String[] args){
       //定义一个三行两列的整型二维数组intArray
        int intArray[][] = new int[3][2];
        Scanner scn = new Scanner(System.in);
       //从键盘输入学生成绩,要求输入顺序与效果图一致
        for(int i=0;i<intArray.length;i++){
           for(int n=0;n<=1;n++){
               String kemu;
               if (n==0) {
                kemu = "语文";
            }else{
                kemu ="数学";
            }
               System.out.println("请输入第"+(i+1)+"个学生的"+kemu+"成绩:");
               intArray[i][n] = scn.nextInt();
           }
            
        }
        int sumyuwen = 0;
        int sumshuxue = 0;
       //求语文的总成绩和平均分
        for(int i=0;i<intArray.length;i++){
            for(int j=0;j<intArray[i].length;j++){
                if (j==0) {
                    sumyuwen = sumyuwen + intArray[i][j];
                }else{
                    sumshuxue = sumshuxue + intArray[i][j];
                }
            }
        }
       //求数学的总成绩和平均分
        int pingjunyuwen = sumyuwen / intArray.length;
        int pingjunshuxue = sumshuxue / intArray.length;
        System.out.println("语文的总成绩位:" + sumyuwen);
        System.out.println("语文的平均分位:" + pingjunyuwen);
        System.out.println("数学的总成绩位:" + sumshuxue);
        System.out.println("数学的平均分位:" + pingjunshuxue);
   }
}


正在回答

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

2回答

代码像一篇文章,没有唯一的答案,只有怎样把它打磨得更优美。你的代码完全可以实现需求,可读性高、结构清晰,但可以把它写得更优美高效一些,可以考虑去掉求和的循环,让计算求和的过程放到前面循环去做,你的代码稍加改动,具体代码参考如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 定义一个三行两列的整型二维数组intArray
int intArray[][] = new int[3][2];
Scanner scn = new Scanner(System.in);
int sumyuwen = 0;
int sumshuxue = 0;
// 从键盘输入学生成绩,要求输入顺序与效果图一致
for (int i = 0; i < intArray.length; i++) {
for (int n = 0; n <= 1; n++) {
if (n == 0) {
System.out.println("请输入第" + (i + 1) + "个学生的语文成绩:");
intArray[i][n] = scn.nextInt();
sumyuwen+=intArray[i][n];
else {
System.out.println("请输入第" + (i + 1) + "个学生的数学成绩:");
intArray[i][n] = scn.nextInt();
sumshuxue+=intArray[i][n];
}
}
}
// 求数学的总成绩和平均分
int pingjunyuwen = sumyuwen / intArray.length;
int pingjunshuxue = sumshuxue / intArray.length;
System.out.println("语文的总成绩位:" + sumyuwen);
System.out.println("语文的平均分位:" + pingjunyuwen);
System.out.println("数学的总成绩位:" + sumshuxue);
System.out.println("数学的平均分位:" + pingjunshuxue);

如果解决了你的疑惑,请采纳,祝学习愉快~


  • JasonHing 提问者 #1
    非常感谢老师的解答!
    2017-05-15 00:03:17
  • 老师,看完以后写不出。。还有for循环哪里为什么n要小于等于1呢
    2017-06-05 18:10:49
  • 你好!因为只需要在数组中存储数学和语文的成绩,所以n<=1,循环执行两次就可以了。另外,老师给的是相对完整的代码,你说的写不出,是指哪里不明白呢?
    2017-06-05 18:35:23
qq_小梁_3 2017-06-26 23:05:35

能否从头到尾解释一下代码的意思

  • 我是看注释和变量名就知道了
    2017-06-28 10:56:23
  • 看得我头晕,觉得我现在基础还没打扎实
    2017-06-29 09:37:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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