老师,帮忙看看代码可以优化吗? 还有switch和if-else 哪个更有效率些呢?

来源:1-8 编程练习

weixin_慕勒8187086

2019-07-25 10:58:02

package test;

import java.util.Scanner;

public class ErWeiShuZhu {

	public static void main(String[] args) {
    	//定义一个三行两列的整型二维数组intArray
            final int STUDENTNUM = 3, SUBJECT = 2;
            final int YUWEN = 0, SHUXUE = 1;
            int[][] intArray = new int[STUDENTNUM][SUBJECT];
            int sumOfYuwen = 0, sumOfShuxue = 0;
            int average_Yuwen, average_Shuxue;
    
            //从键盘输入学生成绩,要求输入顺序与效果图一致
            Scanner sc = new Scanner(System.in);
            for (int i = 0; i < intArray.length; i ++) {
            	for (int j = 0; j < intArray[i].length; j++) {
            		String subjectName = "";
    				switch (j) {
    				case YUWEN:
    					subjectName = "Yuwen";
    					break;
    				case SHUXUE:
    					subjectName = "Shuxue";
    					break;
    				}
            		System.out.printf("Please input the %d student's %s marks: \n", i+1, subjectName);
            		intArray[i][j] = sc.nextInt();
            	}
            	// 计算语文和数学的总分
            	sumOfYuwen += intArray[i][YUWEN];
            	sumOfShuxue += intArray[i][SHUXUE];
            }
            sc.close();
    
            //计算语文和数学的平均分
            average_Yuwen = sumOfYuwen / intArray.length;
            average_Shuxue = sumOfShuxue / intArray.length;
            
            //打印结果
            System.out.printf("Yuwen total is: %d\n", sumOfYuwen);
            System.out.printf("Yuwen average is: %d\n", average_Yuwen);
            System.out.printf("Shuxue total is: %d\n", sumOfShuxue);
            System.out.printf("Shuxue average is: %d\n", average_Shuxue);
	}

}


写回答

2回答

吃吃吃鱼的猫

2019-07-25

同学你好,如果每个学生有多门课程,是建议使用循环嵌套呢~

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

0

吃吃吃鱼的猫

2019-07-25

同学你好,代码写的不错,但可以进行优化,使用一个循环输入每个学生的成绩即可。

关于switch-case与if-else的效率问题,两者效率相差不大,都可以使用。

关于优化的代码,同学可以参考如下链接:

https://class.imooc.com/course/qadetail/114257

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

0
heixin_慕勒8187086
h 谢谢回复,看了下链接的代码。 这里还有个疑问,如果每个学生有多门课程,是用循环嵌套优化还是就用一个循环优化一些?比如有6门课, 如果用一个循环输入学生成绩, 后面就要写j+1, j+2.。。。,j+5,每个都要加上 sc.nextInt(), 这样的话是不是增加了代码的重复性?
h019-07-25
共1条回复

0 学习 · 11489 问题

查看课程