package pack1;
import java.util.Date;
public class GeometricObject {
private String color; //颜色
private boolean filled; //是否填充
private Date dateCreated; //创建日期
protected GeometricObject() {
}
/**带指定颜色和是否填充的构造方法*/
protected GeometricObject(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
/**返回颜色*/
protected String getColor() {
return color;
}
/**设置颜色*/
protected void setColor(String color) {
this.color = color;
}
/**返回是否填充(ture/false)?*/
protected boolean isFilled() {
return filled;
}
/**设置填充*/
protected void setFilled(boolean filled) {
this.filled = filled;
}
/**返回创建日期*/
protected Date getDateCreated() {
return dateCreated;
}
@Override /**返回颜色和填充的字符串*/
public String toString() {
return "Color = " + color + "Filled = " + filled;
}
}
package pack1;
import java.util.Scanner;
public class Triangle extends GeometricObject {
private double side1, side2, side3; //三角形的三条边
/**带默认值的无参构造方法*/
public Triangle() {
this(1, 1, 1);
}
/**带指定三边的构造方法*/
public Triangle(double side1, double side2, double side3) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
/**返回三角形面积*/
public double getArea() {
if(!isValid()) return 0;
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
/**返回周长*/
public double getPerimeter() {
if (!isValid()) return 0;
return side1 + side2 + side3;
}
/**返回边长是否有效?*/
private boolean isValid() {
if (side1 + side2 <= side3 || side1 + side3 <= side2 || side2 + side3 <= side1)
return false;
return true;
}
@Override /**返回三条边的字符串*/
public String toString() {
return "Triangle: side1 = " + side1 + "side2 = " + side2 + "side3 = " + side3;
}
/**返回边1*/
public double getSide1() {
return side1;
}
/**返回边2*/
public double getSide2() {
return side2;
}
/**返回边3*/
public double getSide3() {
return side3;
}
public static void main(String[] args) {
try(Scanner input = new Scanner(System.in);) {
System.out.print("Enter three sides of a triangle: ");
Triangle triangle = new Triangle(input.nextDouble(), input.nextDouble(),
input.nextDouble());
System.out.print("Enter color of the triangle: ");
triangle.setColor(input.next());
System.out.print("Enter whether it needed to fill(true or false): ");
triangle.setFilled(input.nextBoolean());
System.out.println("\nArea: " + triangle.getArea() +
"\nPerimeter: " + triangle.getPerimeter() +
"\nColor: " + triangle.getColor() +
"\nFilled: " + triangle.isFilled());
}
}
}