老师,帮忙看看代码可以优化吗? 还有switch和if-else 哪个更有效率些呢?
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 42 43 44 45 46 47 48 | 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); } } |
0
收起
正在回答
2回答
同学你好,如果每个学生有多门课程,是建议使用循环嵌套呢~
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
吃吃吃鱼的猫
2019-07-25 11:21:58
同学你好,代码写的不错,但可以进行优化,使用一个循环输入每个学生的成绩即可。
关于switch-case与if-else的效率问题,两者效率相差不大,都可以使用。
关于优化的代码,同学可以参考如下链接:
https://class.imooc.com/course/qadetail/114257
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧