OPP课程第三阶段总结
对于第三阶段的PTA题目集整体难度比起之前有所下降,具体体现在代码量和逻辑思维上,但是对于知识点的考察要求依然严格,主要考察了Comparable的接口的使用,正则表达式的灵活运用,TreeMap的运用,HashMap的运用以及对于大量对象信息的匹配和储存。我这篇Blog也会对于我上述的考察知识点给出对应的题目及其分析。
2.设计与分析
OPP训练集08
7-2 图形卡片分组游戏
题目如下:

分析:本题主要要使每个图形类实现Comparable接口,并在对应类中重写compareTo的方法,然后创建对应类的ArrayList来储存对应类型图形的数据,根据输入的数字来储存到不同的ArrayList中,最后对对应的ArrayList调用Collections.sort()方法来进行排序,再使用强化for输出数据。
代码如下:
import java.util.*;
public class Main {
public static Scanner input = new Scanner(System.in);
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<Integer>();
int num = input.nextInt();
if(list.size()==0&&num==0){
System.out.println("Wrong Format");
return ;
}
while(num != 0){
if(num < 0 || num > 4){
System.out.println("Wrong Format");
System.exit(0);
}
list.add(num);
num = input.nextInt();
}
DealCardList dealCardList = new DealCardList(list);
if(!dealCardList.validate()){
System.out.println("Wrong Format");
System.exit(0);
}
dealCardList.showResult();
input.close();
}
}
abstract class Shape{
private String shapeName;
public Shape(String shapeName) {
this.shapeName = shapeName;
}
public Shape() {
}
public String getShapeName() {
return shapeName;
}
public void setShapeName(String shapeName) {
this.shapeName = shapeName;
}
abstract public double getArea();
abstract public boolean validate();
public String toString(){return shapeName;}
}
class Circle extends Shape implements Comparable<Circle>{
private double radius;
public Circle(double radius) {
super("Circle");
this.radius = radius;
}
public Circle() {
}
public double getRadius() {
return radius;
}
public void 