ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

测试题的分析

2019-05-03 21:56:43  阅读:258  来源: 互联网

标签:分析 代码 Java name 测试题 age 成绩 public


              测试题的分析
开发工具与关键技术:Java
作者:刘海红
撰写时间:2019.5.3

最近在测试Java的基础题,今天分析的是一道编程题,为什么要分析这一道题呢?那是因为出现的问题有很多都一些基础知识,并且在Java中很常见,大家都会用到的知识点,迭代器,for循环。
题目如下:假设1701班有40个学生,学号为170101170140,全部参加Java集合阶段检测,给出所有同学的成绩(整数、随机产生,范围为50100),请编写程序将本班各位同学成绩从高往低排序打印输出。
注:成绩相同时学号较小的先打印;
要求:①打印的信息包含学号、姓名(姓名统一为“同学X”[X=01,02,03,…]和学号后两位一致)和成绩,具体格式参考截图。
②遍历输出时使用迭代器
下图是我们需要输出的结果图
在这里插入图片描述

题目就是那么多了,拿到题目的时候首先是看清楚它要求我们做的是什么,其次是有什么条件和需求。输出的时候用什么输出。如下是我的代码
/**

  • 假设1701班有40个学生,学号为170101~170140,
  • 全部参加Java集合阶段检测,给出所有同学的成绩(整数、随机产生,范围为50~100),
  • 请编写程序将本班各位同学成绩从高往低排序打印输出。
  • @author LHH
    */
    public class CsDemo {
    public static void main(String[] args) {
    List persons=new ArrayList();
    //这里不应该add,不应该是添加信息的,为什么不是添加呢?因为信息量少是可以,但是信息量大的话你不可能一个信息一个信息的去添加,这样会消耗时间和代码量也会很多,从而让自己做很多无用的功。这应该用for循环来判断,生成多少个学生,并且生成成绩。
    persons.add(new PersonComparable(“同学22”,22));
    //对list进行排序
    Collections.sort(persons);//记忆点sort排序
    //迭代器
    Iterator iterator=persons.iterator();
    while (iterator.hasNext()) {
    PersonComparable person=iterator.next();
    //没有输出明确的信息,也没有写出完整的信息内容
    System.out.println(person.getName()+"\t"+person.getAge());
    }
    }
    }
    class PersonComparable implements Comparable{
    private int age;//这里不应该用age,可能因为平时写习惯了,应该按题目要求来写,说明我当时看题没看清楚。
    private String name;
    //这里少了成绩的类,导致以下的代码都会不齐全。
    public PersonComparable(String name,int age) {
    super();
    this.age = age;
    this.name = name;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    @Override
    public int compareTo(PersonComparable o) {
    // TODO Auto-generated method stub
    return 0;
    //这里应该用if条件来判断一下的。
    }
    }
    考后总结:以上代码有几处都是错误的,第一:我是添加信息而不是用for循环判断得出信息,这不符合题目的要求,光添加信息的话,有时候有几百几千几万的信息,不可能每个都一条一条的去添加。第二:使用迭代器输出list的时候没有输出清楚具体的内容,第三:在写类的时候没有写清楚具体的类,导致代码欠缺。第四:在compareTo中没有进行if判断语句。所以代码会看起来没有重点的存在。
    考后我又重新做了一遍,这次出现的问题就是我依旧没有用到for循环判断信息。但是也是有点进步的就是除了这里没有写对的情况下,其他的都是写完整了的,以上将是自己要记住的几个地方
    在这里插入图片描述
    以下是老师给出的参考代码:
    在这里插入图片描述
    上图代码中用到for循环判断了生成40个学生的情况下并且随机生成了成绩,而且用if判断i+1<10的时候会输出第一段代码:name=”同学0”+(i+1);否则的话会执行第二段:name=”同学”+(i+1);并且题目给出了一个成绩范围为50~100,所以我们要注意这个随机的范围,并且要能取到100。用迭代器遍历的方式输出值。当然也不只有这一种做法,还有其他的解答方法,
    下图是从高到底输出的所有结果图。
    在这里插入图片描述
    总结:以上是我们的测试试题的分析和错误点的记录,并且自己也做了比较详细的记录,没写出来的。没有记忆到的,跟老师的参考代码来看一对比一目了然,哪个是知识点哪个是需要记忆和理解的都可以分辨。对此让自己也有了一点理解,知识点的扩展。

标签:分析,代码,Java,name,测试题,age,成绩,public
来源: https://blog.csdn.net/weixin_44543349/article/details/89791677

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有