为了账号安全,请及时绑定邮箱和手机立即绑定

澳门百合娱乐场,沙巴娱乐开户

2016.05.31 17:03 6897浏览

本文地址:http://www.bgel.cn/article/8521
文章摘要:澳门百合娱乐场,沙巴娱乐开户,利胜娱乐城,扎金花棋牌游戏官网

这个案例非常经典,嵌套了很多知识。做了一遍又一遍。干货很多。推荐给大家。对数组长度,转化的理解,嵌套循环,遍历的理解,冒泡排序,输出,多次输出,换行等等都有涉及到。总之非常经典。

第一阶段确定学生人数,确定课程数目,确定课程名称。
图片描述
/**

  • 第一阶段去顶学生人数,确定课程数目,确定课程名称。
  • 主要是确定数组长度,以及给其中一个数组赋值。
  • 数组长度不是事先确定,而是控制台输入确定,这一下子难度提高了一个台阶。
  • 很容易导致数组越界。
  • */
    Scanner in=new Scanner(System.in);
    System.out.println("请输入学生人数:");
    int perNum=in.nextInt();
    String [] perName=new String[perNum];
    System.out.println("请输入课程数:");
    int scNum=in.nextInt();
    String scName[]=new String [scNum];

    for (int i = 0; i < scNum; i++) {
        System.out.println("请输入"+(i+1)+"课程名称:");
         scName[i]=in.next();   
    }

第二阶段,确定每一个学生姓名,确定每一个课程成绩

图片描述
/*

  • 第二阶段,确定每一个学生姓名,确定每一个课程成绩
  • 循环嵌套,分别给学生姓名,学生成绩赋值。嵌套遍历输入赋值。
  • 注意长度,很容易混淆普通遍历与数组遍历的长度。
  • 而且容易混淆学生与成绩的长度。
  • 从这一阶段输出语句变成了难点。
  • **/
    Scanner in=new Scanner(System.in);
    System.out.println("请输入学生人数:");
    int perNum=in.nextInt();
    String [] perName=new String[perNum];
    System.out.println("请输入课程数:");
    int scNum=in.nextInt();
    String scName[]=new String [scNum];
    double sc[][]=new double[perNum][scNum];

    double sum[]=new double [scNum];
    double avg[]=new double [scNum];
    
    for (int i = 0; i < scNum; i++) {
        System.out.println("请输入"+(i+1)+"课程名称:");
         scName[i]=in.next();   
    }
    //外层循环perName[i]不变,内层循环scName[j]改变一轮。
    for (int i = 0; i <perNum; i++) {
        System.out.println("请输入"+(i+1)+"学生姓名");
        perName[i]=in.next();
        for (int j = 0; j < scNum; j++) {
            System.out.println("请输入"+perName[i] +scName[j]+"的成绩");
            sc[i][j]=in.nextDouble();
    
        }

    }
    第三阶段测试。
    /**

  • 中间测试代码,不是正式程序代码!!!
  • 因为下一步很难,为了防止出现意外,最好写一段程序,运行一下。
  • 发下问题,改正后继续编写,这里也写一个检验的程序。
  • 分别遍历三个数组。看是否将数据传入了进去,然后在想办法组合输出。
  • 这三个数组分别是学生姓名perName[],课程名字scName[],课程成绩sc[].
  • 如果能这样输出就容易多了,可惜要表格输出,还要二维输出。
  • 确定正确了,将他注释掉,也可以留作后面表格输出的参考。
  • 等待整个程序大功告成了,在注释掉,删除也行。
  • */

    /*for (int i = 0; i < sc.length; i++) {
        System.out.println("学名"+perName[i]);
    }
    System.out.println("***********");
    for (int i = 0; i < sc.length; i++) {
        System.out.println("科名"+scName[i]);
    }
    System.out.println("***********");
    for (int i = 0; i < sc.length; i++) {
        System.out.println("成绩"+sc[i]);
    }
    System.out.println("***********");
    for (int i = 0; i < sc.length; i++) {
        System.out.println("总分"+sum2[i]);
    }
    System.out.println("***********");
    for (int i = 0; i < sc.length; i++) {
        System.out.println("平均分"+avg2[i]);
    }
    System.out.println("***********");
    */

    第四阶段,计算总分,计算平均分。输出。其实输出非常难,应该算是第五阶段。

图片描述
请大家瞧一瞧我出的洋相。类似的等等七八次,还有第一行也出错了不少、

图片描述
图片描述

第五阶段输出总分与平均分。
图片描述
/**

  • 这个注释造型别致吧,嘿嘿。
  • 第三阶段,计算总分,计算平均分,这个简单。难的是下面的输出。
  • 其实总分与平均分也可以赋值给新的数组。这一段代码可要可不要。
  • 输出。输出非常难,不仅竖向有变化,横向也有变化.这就要用到二维数组。
  • 。更变态的是排行榜排序。更是难上加难。应该算是第四阶段。
    而且因为表格太难,甚至可以分为三个阶段。如此就算第四阶段输出学生成绩
    第五阶段输出计算的部分,总分,平均分。
    第六阶段,输出排行榜。
    首先将第三阶段部分,以及测试阶段的全部注释掉。
    **/
    Scanner in=new Scanner(System.in);
    System.out.println("请输入学生人数:");
    int perNum=in.nextInt();
    String [] perName=new String[perNum];
    System.out.println("请输入课程数:");
    int scNum=in.nextInt();
    String scName[]=new String [scNum];
    double sc[][]=new double[perNum][scNum];

    double sum[]=new double [scNum];
    double avg[]=new double [scNum];
    String aa[] =new String [perNum];
    
    for (int i = 0; i < scNum; i++) {
        System.out.println("请输入"+(i+1)+"课程名称:");
         scName[i]=in.next();   
    }
    String a="";
    for (int i = 0; i <perNum; i++) {
        System.out.println("请输入"+(i+1)+"学生姓名");
        perName[i]=in.next();
        for (int j = 0; j < scNum; j++) {
            System.out.println("请输入"+perName[i] +"第"+(j+1)+"门成绩"); //二维数组存放特定学生的特定科目的特定成绩。
                                       // 猛一看起来好像三维数组,这样理解,经纬度确定一个地方的位置。
                                       // 二维数组也是用竖向下标与横向下标一对下标确定成绩。
            sc[i][j]=in.nextDouble();
        sum[i]=sum[i]+sc[i][j];
    
        }
        avg[i]=sum[i]/scNum;
    
    }
    
    System.out.print("学生");
    for (int i = 0; i < scName.length; i++) {
        System.out.print("\t"+scName[i]);
    }
    System.out.print("\t总分"+"\t平均分"+"\t排行榜");
    System.out.println();
    
    //到了二维输出的时候。嵌套循环搭配二维数组。绝配
            //换行不换行也是二维数组输出的难点。
    for (int i = 0; i <perNum ; i++) {
        System.out.print(perName[i]);
        for (int j = 0; j < scNum; j++) {
            System.out.print("\t"+sc[i][j]);
        }
        System.out.print("\t"+sum[i]+"\t"+avg[i]);
    
        System.out.println();

    }
    }

第六阶段输出排行榜。
终于完成了排序。

图片描述

再加上名词的对比效果

图片描述
最终代码,内容限制,去掉了注释,反正前面都有。
public static void main(String[] args) {

    Scanner in=new Scanner(System.in);
    System.out.println("请输入学生人数:");
    int perNum=in.nextInt();
    String [] perName=new String[perNum];
    System.out.println("请输入课程数:");
    int scNum=in.nextInt();
    String scName[]=new String [scNum];
    double sc[][]=new double[perNum][scNum];

    double sum[]=new double [scNum];
    double avg[]=new double [scNum];
    String aa[] =new String [perNum];       用数组整合每一排的信息,方便调序。整体挪移。
    for (int i = 0; i < scNum; i++) {
        System.out.println("请输入"+(i+1)+"课程名称:");
         scName[i]=in.next();   
    }
    String a="";
    for (int i = 0; i <perNum; i++) {
        System.out.println("请输入"+(i+1)+"学生姓名");
        perName[i]=in.next();
        for (int j = 0; j < scNum; j++) {
            System.out.println("请输入"+perName[i] +"第"+(j+1)+"门成绩");
            sc[i][j]=in.nextDouble();
        sum[i]=sum[i]+sc[i][j];
         a=a+sc[i][j]; //作用是整合变化成绩信息,作为中转。不然的有两个变量ij又要嵌套循环了
        }
        avg[i]=sum[i]/scNum;
     aa[i] =perName[i]+a+sum[i]+avg[i];//整合一行的信息为一个字符串,每一行的字符串构成一个数组。最大的数组。
    }

    System.out.print("学生"); //不能换行,将复杂问题化解成多个小问题。要一步步来
    for (int i = 0; i < scName.length; i++) {
        System.out.print("\t"+scName[i]);
    }
    System.out.print("\t总分"+"\t平均分"+"\t排行榜");
    System.out.println();
    //嵌套冒泡排序。注意总分排序,紧跟着这一行都要排序。
    for (int j = 0; j < perNum-1; j++) {

        for (int i = 0; i < perNum-1; i++) {

            if (sum[i]<sum[i+1]) {
                double t=sum[i];    String tt=aa[i];
                sum[i]=sum[i+1];    aa[i]=aa[i+1];
                sum[i+1]=t;         aa[i+1]=tt;

            }

        }

    }

    for (int i = 0; i <perNum ; i++) {
        System.out.print(perName[i]);
        for (int j = 0; j < scNum; j++) {
            System.out.print("\t"+sc[i][j]);
        }
        System.out.print("\t"+sum[i]+"\t"+avg[i]+"\t第"+(i+1)+"名");

        System.out.println();
    }
点击查看更多内容

本文原创发布于慕课网 ,转载请注明出处,谢谢合作

44人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
意见反馈 去赚学费 帮助中心 APP下载
官方微信
扎金花棋牌游戏官网

举报

0/150
提交
取消
网站地图 龙8苹果手机APP 体育开户网站 亚虎国际app 全讯网-新2网址
新利棋牌官网 平台 线路检测 188比分官方 澳门百老汇游戏娱乐
申博娱乐 pt电子游戏开户送体验金 明发客户端 2018世界杯竞猜投注
永利皇宫网站 集美国际娱乐场 妻子的秘密谢文苏蓝 龙8手机app下载
送彩金老虎机 凯发k8娱乐 求万博体育官网 天时娱乐下载
趣彩彩票官网 时时计划全天计划 博悦彩票登录 新生彩娱乐登录网站 满堂彩时时彩计划
重庆时时计划 吉利彩票网址 斗牛娱乐 合盛娱乐平台注册 新生娱乐彩票登陆平台
凤凰彩票版权所有 博天下娱乐 多盈在线彩票 樱花彩票 k彩娱乐登录
如意娱乐平台 彩客网电脑版 澳彩城 天游娱乐注册 极彩官网