测试题的分析

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

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

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

  • 假设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循环判断信息。但是也是有点进步的就是除了这里没有写对的情况下,其他的都是写完整了的,以上将是自己要记住的几个地方
    测试题的分析_第2张图片
    以下是老师给出的参考代码:
    测试题的分析_第3张图片
    上图代码中用到for循环判断了生成40个学生的情况下并且随机生成了成绩,而且用if判断i+1<10的时候会输出第一段代码:name=”同学0”+(i+1);否则的话会执行第二段:name=”同学”+(i+1);并且题目给出了一个成绩范围为50~100,所以我们要注意这个随机的范围,并且要能取到100。用迭代器遍历的方式输出值。当然也不只有这一种做法,还有其他的解答方法,
    下图是从高到底输出的所有结果图。
    测试题的分析_第4张图片
    总结:以上是我们的测试试题的分析和错误点的记录,并且自己也做了比较详细的记录,没写出来的。没有记忆到的,跟老师的参考代码来看一对比一目了然,哪个是知识点哪个是需要记忆和理解的都可以分辨。对此让自己也有了一点理解,知识点的扩展。

你可能感兴趣的:(Java)