只是为了确保这是我的家庭作业。我需要实现类来计算几何形状的面积和周长。
我需要的概述:我将提供类似" java ShapeTest Rectangle 5 5"在命令行中,应该给出该矩形的面积和周长。
这是我的代码:
Shape.java
public abstract class Shape {
public abstract double area();
public abstract double perimeter();
}
Rectangle.java
public class Rectangle extends Shape {
private double b;
private double a;
public Rectangle(){
}
public Rectangle(double a, double b) {
this.a = a;
this.b = b;
}
@Override
public double area(){
return a *b;
}
@Override
public double perimeter(){
return 2*(a+b);
}
@Override
public String toString() {
return "Rectangle{" +
"a=" + a +
" b=" + b +
'}';
}
}
我有类似的Circle,Triangle和Sqaure.java。 这是我的ShapeTest.java
public class FormenTest {
public static void set(){
//I want something here
}
public static void main(String[] args) {
Rectangle rectangle = new Rectangle(Character.getNumericValue((args[1].charAt(0))),Character.getNumericValue((args[2].charAt(0))) );
if(args[0].equals("Rectangle")){
System.out.println(rectangle.area());
}
}
}
现在,这种做了所需要的但我不认为这是很好的方法。在ShapeTest
类里面的set方法中,我想生成我稍后在main方法中使用的shape对象。任何有关优化代码和填充集方法的帮助都将受到赞赏。
答案 0 :(得分:2)
您的主要方法可能如下所示:
public static Shape createShape(String[] args) {
Shape s = null;
if(args.length > 0) {
switch(args[0]) {
case "Rectangle":
if(args.length > 2) {
s = new Rectangle(Double.parseDouble(args[1]), Double.parseDouble(args[2]));
}
break;
case "Circle":
if(args.length > 1) {
s = new Circle(Double.parseDouble(args[1]));
}
break;
case "Triangle":
//etc...
break;
}
}
return s;
}
public static void main(String[] args) {
Shape s = createShape(args);
if(s != null) {
System.out.println("Area: " + s.area());
System.out.println("Perimeter: " + s.perimeter());
}
}
}
当然,您需要添加用户友好的异常处理。