算不算最优?
来源:1-8 编程练习
慕标2358859
2021-04-08 09:40:33
int[][] Arr= new int[3][2];
Scanner sc=new Scanner(System.in);
for (int i=0;i<Arr.length;i++){
for (int j=0;j<Arr[i].length;j++){
if (j==0){
System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
Arr[i][j]=sc.nextInt();
}else if (j == 1){
System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
Arr[i][j]=sc.nextInt();
}
}
}
//sum1表示语文总和,sum2表示数学总和,aver1表示语文平均分,aver2表示数学平均分
int sum1=0,sum2=0,aver1=0,aver2=0;
System.out.println("输出所有学生所有成绩:");
for (int i=0;i<Arr.length;i++){
for (int j=0;j<Arr[i].length;j++){
if (j==0){
System.out.print("语文");
sum1=sum1+Arr[i][j];
aver1=sum1/Arr.length;
}else if (j==1){
System.out.print("数学");
sum2=sum2+Arr[i][j];
aver2=sum2/Arr.length;
}
System.out.print(Arr[i][j]+" ");
}
System.out.println();
}
System.out.println("语文的总成绩:"+sum1);
System.out.println("语文的平均分:"+aver1);
System.out.println("数学的总成绩:"+sum2);
System.out.println("数学的平均分:"+aver2);
1回答
好帮手慕小尤
2021-04-08
同学你好,同学的代码完成的不错,很棒!不过同学代码还可以优化:
这里可以只定义一层循环,并且从键盘接收数据,为每位学生的成绩赋值的同时求和。修改后代码如下:


public static void main(String[] args) {
int[][] Arr = new int[3][2];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < Arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "个学生的语文成绩:");
Arr[i][0] = sc.nextInt();
System.out.println("请输入第" + (i + 1) + "个学生的数学成绩:");
Arr[i][1] = sc.nextInt();
}
// sum1表示语文总和,sum2表示数学总和,aver1表示语文平均分,aver2表示数学平均分
int sum1 = 0, sum2 = 0, aver1 = 0, aver2 = 0;
System.out.println("输出所有学生所有成绩:");
for (int i = 0; i < Arr.length; i++) {
System.out.print("语文");
sum1 = sum1 + Arr[i][0];
aver1 = sum1 / Arr.length;
System.out.print(Arr[i][0] + " ");
System.out.print("数学");
sum2 = sum2 + Arr[i][1];
aver2 = sum2 / Arr.length;
System.out.print(Arr[i][1] + " ");
System.out.println();
}
System.out.println("语文的总成绩:" + sum1);
System.out.println("语文的平均分:" + aver1);
System.out.println("数学的总成绩:" + sum2);
System.out.println("数学的平均分:" + aver2);
}
祝学习愉快!
相似问题