本次题目集4~6题量较少,难度较大,题目主要涉及知识点为类的设计和创建及正则表达式查找;
题7-2:
题7-5:
从类的设计来看,题7-2将detile 类继承每个细分的日期类,封装所有细分类的方法,这样的好处是当创建一个detile类实例时每个实例里都有完整的年月日信息,方法、数据集中使后续操作会更简单,缺点是创建时赋值更麻烦,没有很好的体现面向对象的思想且没有实现多态,灵活性低;7-5则将year、month、day、层层继承,优点是清晰的分清了各个细分类中的数据和方法缺点是构造方法构建较复杂;
运用的是常规类继承的思想,子类继承父类中重复的数据和方法,方法还是分开写在各自的类中;
考虑到要根据用户输入来输出各种图像的数据,但是各种图形类不同,会让主函数中重复出现创建不同类的代码段,于是想到创建一个共同的类,创建时都创建这个类,赋值则后续搞定,代码如下:`class Shape {
Shape() {
System.out.println("Constructing Shape");
}
}class sjx {
double sj_1;
double sj_2;
double sj_3;
sjx() {
}
void set_1(double a) {
this.sj_1 = a;
}
void set_2(double a) {
this.sj_2 = a;
}
void set_3(double a) {
this.sj_3 = a;
}
boolean check() {
if (sj_1 + sj_2 > sj_3 && sj_2 + sj_3 > sj_1 && sj_1 + sj_3 > sj_2 && sj_1 > 0 && sj_2 > 0 && sj_3 > 0) {
return true;
} else {
return false;
}
}
double getArea() {
double p = (sj_1 + sj_2 + sj_3) / 2;
double d = p * (p - sj_1) * (p - sj_2) * (p - sj_3);
return Math.pow(d, 0.5);
√[p(p-a)(p-b)(p-c)].
}class Circle extends Shape {
double radius;
Circle(double a) {
this.radius = a;
}
void getradius(double a) {
if(a>0) {
this.radius = a;}
else {
System.out.print("Wrong Format");
System.exit(0);
}
}
double getArea() {
double a;
a = Math.PI * this.radius * this.radius;
return a;
}
double getradius() {
return this.radius;
}}class Rectangle extends Shape {
double width;
double length;
Rectangle() {
}
Rectangle(double a, double b) {
this.length = a;
this.width = b;
}
void setwidth(double a) {
if(a>0) {this.width = a;
}
else {
System.out.print("Wrong Format");
System.exit(0);
}
}
void setlength(double b) {
if(b>0) {this.length = b;}
else {
System.out.print("Wrong Format");
System.exit(0);
}
}
double getArea() {
double a;
a = this.length * this.width;
return a;
}}
`
后续在细分的图形中加入相应的求面积公式;
主要是接口的运用,要求较简单,即在圆形类和矩形类中分别重载getarea方法即可,主要就是学习接口实现的语法和重载的运用,比较基础,主要卡住我的是保留两位小数输出,注意到这个要求后用decimalformat类即可控制输出格式啦。
原文:https://www.cnblogs.com/lbhzp/p/14718202.html