成绩表的问题

成绩表的问题

麻烦老师给看一下,这个写成绩求和和平均的代码时好像固定了,怎么能灵活一些?

正在回答

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

4回答

同学你好!

1. 整体完成不错,不过这里其实不需要动态的输入科目,因为这里每一个if判断都是一个科目,如果动态输入科目,那么这里的if语句个数也应该是动态的。否则是无法达到动态的效果的

http://img1.sycdn.imooc.com//climg/5e1187b009f928b906350482.jpg

2. 同学这里探索的精神很棒,给你点赞。这里同学重点掌握二维数组的运用即可

祝学习愉快~

  • Michael_2020 提问者 #1
    感谢答疑,知识有限,就是没有做到动态输入[捂脸]。 还是很感谢您的分享,谢谢!
    2020-01-05 15:51:48
提问者 Michael_2020 2020-01-05 13:10:35

package com.Yito.Michael;


import java.util.Scanner;


public class SocreDemo_2 {

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);


// 定义一个三行两列的整型二维数组intArray


System.out.println("请输入学生人数:");

int a = sc.nextInt();

System.out.println("请输入科目数,最多3科");

int b = sc.nextInt();


int[][] intArray;

intArray = new int[a][b];


int sumChina = 0;

int sumMaths = 0;

int sumEng = 0;


int avgChina = 0;

int avgMaths = 0;

int avgEng = 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();

sumChina = sumChina + intArray[i][j];

avgChina = sumChina / intArray.length;


} else if (j == 1) {

System.out.println("请输入学生" + (i + 1) + "的数学成绩");

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

sumMaths = sumMaths + intArray[i][j];

avgMaths = sumMaths / intArray.length;


} else {

System.out.println("请输入学生" + (i + 1) + "的英语成绩");

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

sumEng = sumEng + intArray[i][j];

avgEng = sumEng / intArray.length;

}

}

}


System.out.println("语文成绩总和为" + sumChina);

System.out.println("数学成绩总和为" + sumMaths);

System.out.println("英语成绩总和为" + sumEng);

System.out.println();

System.out.println("语文成绩平均分为" + avgChina);

System.out.println("数学成绩平均分为" + avgMaths);

System.out.println("数学成绩平均分为" + avgEng);


}


}


好帮手慕小脸 2020-01-02 18:23:54

同学你好,代码已实现,继续加油!

可以使用循环来完成,这样会更灵活, 同学也可以参考下如下链接中的代码哦 https://class.imooc.com/course/qadetail/114257

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


  • 提问者 Michael_2020 #1
    package com.Yito.Michael; import java.util.Scanner; public class SocreDemo_2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 定义一个三行两列的整型二维数组intArray System.out.println("请输入学生人数:"); int a = sc.nextInt(); System.out.println("请输入科目数,最多3科"); int b = sc.nextInt(); int[][] intArray; intArray = new int[a][b]; int sumChina = 0; int sumMaths = 0; int sumEng = 0; int avgChina = 0; int avgMaths = 0; int avgEng = 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(); sumChina = sumChina + intArray[i][j]; avgChina = sumChina / intArray.length; } else if (j == 1) { System.out.println("请输入学生" + (i + 1) + "的数学成绩"); intArray[i][j] = sc.nextInt(); sumMaths = sumMaths + intArray[i][j]; avgMaths = sumMaths / intArray.length; } else { System.out.println("请输入学生" + (i + 1) + "的英语成绩"); intArray[i][j] = sc.nextInt(); sumEng = sumEng + intArray[i][j]; avgEng = sumEng / intArray.length; } } } System.out.println("语文成绩总和为" + sumChina); System.out.println("数学成绩总和为" + sumMaths); System.out.println("英语成绩总和为" + sumEng); System.out.println(); System.out.println("语文成绩平均分为" + avgChina); System.out.println("数学成绩平均分为" + avgMaths); System.out.println("数学成绩平均分为" + avgEng); } }
    2020-01-05 13:09:46
  • 提问者 Michael_2020 #2
    麻烦老师再给看一下,我使用了键盘指定人数和科目数,自己认为人数没有问题,科目数以及输出控制有些问题,如何灵活实现?
    2020-01-05 13:09:56
  • 提问者 Michael_2020 #3
    重新贴了代码,请赐教,谢谢。
    2020-01-05 13:11:32
提问者 Michael_2020 2020-01-02 16:50:17

import java.util.Scanner;

public class ScoreDemo{

   public static void main(String[] args){

       //定义一个三行两列的整型二维数组intArray

       int[][] intArray;

       intArray = new int[3][2];

       

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

       Scanner sc = new Scanner(System.in);

       

       

       System.out.println("从键盘输入学生1语文成绩");

       intArray[0][0]=sc.nextInt();

       System.out.println("学生1语文成绩:"+intArray[0][0]);

       

       System.out.println("从键盘输入学生1数学成绩");

       intArray[0][1]=sc.nextInt();

       System.out.println("学生1数学成绩:"+intArray[0][1]);

       

       System.out.println("从键盘输入学生2语文成绩");

       intArray[1][0]=sc.nextInt();

       System.out.println("学生2语文成绩:"+intArray[1][0]);

       

       System.out.println("从键盘输入学生2数学成绩");

       intArray[1][1]=sc.nextInt();

       System.out.println("学生2数学成绩:"+intArray[1][1]);

       

       System.out.println("从键盘输入学生3语文成绩");

       intArray[2][0]=sc.nextInt();

       System.out.println("学生3语文成绩:"+intArray[2][0]);

       

       System.out.println("从键盘输入学生3数学成绩");

       intArray[2][1]=sc.nextInt();

       System.out.println("学生3数学成绩:"+intArray[2][1]);

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

       int sum=0;

       int pj=0;

       

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

           sum=sum+intArray[i][0];  // 这里我用是[i][0],如果后期数据修改起来一定麻烦

           pj=(sum)/(intArray.length);

           }

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

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

       

       

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

       int sum1=0;

       int pj1=0;

       

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

           sum1=sum1+intArray[i][1];   

           pj1=(sum1)/(intArray.length);

           }

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

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

        

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

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

                System.out.print(intArray[i][j]+"  ");

            }

            System.out.println();

        }

        System.out.println(sum+"  "+sum1);

        System.out.println(pj+"  "+pj1);

   }

}


问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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