【问题标题】:Designing a class named Triangle in Java [duplicate]在Java中设计一个名为Triangle的类[重复]
【发布时间】:2020-07-04 18:09:37
【问题描述】:

设计一个扩展 GeometricObject 的名为 Triangle 的类。该类包含:

一个。三个名为 side1、side2 和 side3 的双精度数据字段,默认值为 1.0,表示三角形的三个边。

b.创建默认三角形的无参数构造函数。

c。一个构造函数,用于创建具有指定边 1、边 2 和边 3 的三角形。

d。所有三个数据字段的访问器方法。

e。一个名为 getArea() 的方法,它返回这个三角形的面积。

f。一个名为 getPerimeter() 的方法,它返回这个三角形的周长。

g.一个名为 toString() 的方法,它返回三角形的字符串描述。

三角形面积的计算公式是: s = (side1 + side2 + side3)/2; 面积 = s(s – side1) (s – side2) (s – side3)

toString() 方法实现如下: 返回“三角形:side1 = “ + side1 + “side2 = “ + side2 + “side3 = “ + side3;

编写一个测试程序,提示用户输入三角形的三个边,一个颜色,一个布尔值来表示三角形是否被填充。程序应该创建一个具有这些边的三角形对象,并使用输入设置颜色和填充属性。程序应该显示面积、周长、颜色,以及判断是否填充的真假。

我试过这个问题,代码如下,但是Triangle类有错误,我不知道如何解决。


 //Triangle Class
      public class Triangle extends GeometricObject 
     {
         private double side1 = 1.0;
         private double side2 = 1.0;
         private double side3 = 1.0;
         
          public Triangle()
          {
              
          }
         
          public Triangle(double side1, double side2, double side3)
         {
             this.side1 = side1;
             this.side2 = side2;
             this.side3 = side3;
             
         }
         
     
         public double getSide1() 
         {
             return side1;
         }
     
         public double getSide2() 
         {
             return side2;
         }
     
         public double getSide3()
         {
             return side3;
         }
     
         public void setSide1(double side1) 
         {
             this.side1 = side1;
         }
     
         public void setSide2(double side2) 
         {
             this.side2 = side2;
         }
     
         public void setSide3(double side3)
         {
             this.side3 = side2;
         }
     
         public double getArea()
         {
             double area,s;
             s = (side1+side2+side3)/2;
             area = Math.sqrt(s * (s- side1) * (s - side2) * (s - side3));
             return area;
         }
     
         public double getPerimeter() 
         {
             return side1 + side2 + side3;
         }
     
         public String toString()
         {
         return " Triangle: Side 1 = " + side1 + " Side 2 = " + side2
                + " Side 3 = " + side3;
         }
         
         
     }

//GeometricObject Class
   public class GeometricObject
{
    protected String color = "white";
    protected boolean filled;
    public GeometricObject(String color, boolean filled)
    {
    this.color = color;
    this.filled = filled;
    }

//getColor()
    public String getColor()
    {
    return color;
    }

//setColor
    public void setColor(String color)
    {
    this.color = color;
    }

//isFilled
    public boolean isFilled()
    {
    return filled;
    }

//setFilled
    public void setFilled(boolean filled)
    {
    this.filled = filled;
    }
}
//Test Program
public class Lab82
{
    private double side1 = 1.0;
    private double side2 = 1.0;
    private double side3 = 1.0;

        public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);

        System.out.println("Enter three sides of the Triangle");
        double side1 = input.nextDouble();
        double side2 = input.nextDouble();
        double side3 = input.nextDouble();

        System.out.println("Enter the color of the Triangle");
        String color = input.next();

        System.out.println(" Is the Triangle filled? Reply with 'True' or 'False' ");

        String filled = input.next(); 
    
        
        Triangle triangle = new Triangle(side1, side2, side3);
       

        System.out.println("The Triangle Sides are \n side 1: " + triangle.getSide1() + "\n Side 2: " + triangle.getSide2() + "\n Side 3: " + triangle.getSide3());
        System.out.println("The Triangle's Area is " + triangle.getArea());
        System.out.println("The Triangle's Perimeter is "+ triangle.getPerimeter());
        System.out.println("The Triangle's Color is " + triangle.getColor());
        System.out.println("Is the Triangle filled? " + triangle.isFilled());

    }
}

我得到的错误是:

【问题讨论】:

    标签: java class inheritance


    【解决方案1】:

    当你的类扩展另一个没有默认(无参数)构造函数的类时,你应该告诉 java 在构造子类的实例时如何构造它的父类。在您的情况下,java 不知道将 colorfilled 提供给父构造函数。

    你应该像这样使用super关键字在所有子类的构造函数中调用父构造函数:

    public class Triangle extends GeometricObject 
         {
              // ...
              public Triangle()
              {
                  super(someColor, someFilled);
              }
              // ...
         }
    

    【讨论】:

      猜你喜欢
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多