public abstract class Shape {
public static final double PI=3.14;
public abstract double getArea();
public abstract double getPerimeter();
}public class Circle extends Shape{
double r;
public Circle(double r){
this.r=r;
}
@Override
public double getArea(){
return Shape.PI*r*r;
}
@Override
public double getPerimeter(){
return Shape.PI*r*2;
}
}public class Rectangle extends Shape {
double m, n;
public Rectangle(double m, double n) {
this.m = m;
this.n = n;
}
@Override
public double getArea() {
return m * n;
}
@Override
public double getPerimeter() {
return 2 * (m + n);
}
}public class Triangle extends Shape {
double a, b, c;
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double getArea() {
double p = (a + b + c) / 2;
if ((a + b) > c && (a + c) > b && (b + c) > c) {
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
} else {
System.out.println("wrong values");
return -1;
}
}
@Override
public double getPerimeter() {
if ((a + b) > c && (a + c) > b && (b + c) > c) {
return a + b + c;
} else {
System.out.println("wrong values");
return -1;
}
}
}import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("choose the shape which is the one you want calculate it's area and Perimeter:");
System.out.println("1.Circle\t2.Triangle\t3.Rectangle");
try {
int choice = sc.nextInt();
switch (choice) {
case 1:
System.out.println("input r:");
try {
double r = sc.nextDouble();
Shape s = new Circle(r);
System.out.println("the area of the circle is :" + s.getArea()
+ "\nthe perimeter of the circle is :" + s.getPerimeter());
} catch (Exception e) {
System.out.println("wrong");
}
break;
case 2:
System.out.println("input a,b,c:");
double a, b, c;
try {
a = sc.nextDouble();
b = sc.nextDouble();
c = sc.nextDouble();
Shape s = new Triangle(a, b, c);
System.out.println("the area of the circle is :" + s.getArea()
+ "\nthe perimeter of the circle is :" + s.getPerimeter());
} catch (Exception e) {
System.out.println("wrong");
}
break;
case 3:
System.out.println("input m,n:");
double m, n;
try {
m = sc.nextDouble();
n = sc.nextDouble();
Shape s = new Rectangle(m, n);
System.out.println("the area of the circle is :" + s.getArea()
+ "\nthe perimeter of the circle is :" + s.getPerimeter());
} catch (Exception e) {
System.out.println("wrong");
}
break;
}
} catch (Exception e) {
System.out.println("please choose a correct number");
}
sc.close();
}
}怎么变成java组件和事件处理的图形化界面。