Ron Paul Ron Paul - 5 months ago 14
Java Question

Im having trouble with my ShapeApp in java! im lost

I'm getting an error message, please help me- I don't know where to go from here. I'm getting the error below and these are my classes.

shape class

public abstract class Shape implements Triangle{

protected static final double DEFAULT_SIZE = (double) 1.0;
protected static final String DEFAULT_NAME = "Unknown";
private String shapeName;

public Shape(){
this.shapeName = DEFAULT_NAME;
}

public Shape(String name) {
setShapeName(name);

}

protected void setShapeName(String name) {
if( name.trim().length() == 0 )
shapeName = DEFAULT_NAME;
else
shapeName = new String ( name );

}

public String getShapeName() {
//name
return shapeName;

}



public abstract double getSurfaceArea();

public abstract double getPerimeter();


public String toString{
return String.format("%s %s\nshape name: %s",getShapeName());
}
}


rectangle class

public class Rectangle extends Shape implements Triangle {



private double length;
private double heigth;

public Rectangle() {
super("Rectangle");
setLength( super.DEFAULT_SIZE );
setHeight( Shape.DEFAULT_SIZE );

}

public Rectangle(double theLength, double theHeight ){
super("Rectangle");
if ( theLength < 0 )
setLength( Shape.DEFAULT_SIZE );
else setLength( theLength );

if ( theHeight < 0)
setHeight( Shape.DEFAULT_SIZE );
else setHeight( theHeight );
}



public double getSurfaceArea() {
return this.length * this.heigth;
}

public double getPeremeter() {
return 2 * this.length + 2 * this.length;

}

public double getLength(){
return this.length;
}

public double getHeight(){
return this.heigth;
}

public void setLength( double theLength ){
if ( theLength <= 0 )
return;
this.length = theLength;
}

public void setHeight( double theHeight ){
if (theHeight <= 0 )
return;
this.heigth = theHeight;

}

public String toString(){
return String.format("%s: \n%s: %s (%s) \n%s: %d \n%s: $%,.2f",
"Rect Surface Area ", "Rect Peremeter", getSurfaceArea(), getPeremeter());
}

public double getSizeAmount(){

}

}


circle class

public class Circle extends Shape {
private double radius;

public Circle( double theRadius ){
super( "Circle" );
if ( theRadius <= 0.0 )
setRadius( Shape.DEFAULT_SIZE );
else
setRadius( theRadius );
}

public Circle(String string, String string2, String string3, String string4) {
// TODO Auto-generated constructor stub
}

public double getSurfaceArea(){

return this.radius * this.radius * Math.PI;
}

public double getPeremeter(){
;
return 2 * this.radius + Math.PI;
}

public double getRadius(){
return this.radius;

}

public void setRadius( double theRadius ) {
if( theRadius <= 0 )
return;
this.radius = theRadius;
}

@Override
public double getPerimeter() {
// TODO Auto-generated method stub
return 0;

public double getSizeAmount(){

}

public String toString(){
return String.format("%s: \n%s: %s (%s) \n%s: %d \n%s: $%,.2f",
"Circle Surface Area ", "Circle Peremeter", getSurfaceArea(), getPeremeter());
}
}
}


triangle class

//triangle interface decleration
public interface Triangle {



double getSizeAmount(); //calculate sizes of triangle; no implementation

}//end interface triangle


main class

import javax.swing.JOptionPane;




public class ShapeApp {

//public static void main(String args[])
public static void main(String[] args) {

Triangle triangleObjects[] = new Triangle[ 4 ];

triangleObjects[ 0 ] = new Rectangle("3.5", "4.6","42");
triangleObjects[ 1 ] = new Rectangle("3", "2","34");
triangleObjects[ 2 ] = new Circle("Circle", "Rectangle","0808","0808");
triangleObjects[ 3 ] = new Circle("Circle","Rectangle","2334","2423");

System.out.println( "List of all Shapes:\n" );

for( Triangle currentTriangle : triangleObjects ){

System.out.printf("%s \n%s: $%,.2f\n\n",
currentTriangle.toString(),
"ovo testiramo", currentTriangle.getSizeAmount());

}


}

}


this is the error im getting

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The constructor Rectangle(String, String, String) is undefined
The constructor Rectangle(String, String, String) is undefined

at ShapeApp.main(ShapeApp.java:14)

Answer

Error message is very clear:

The constructor Rectangle(String, String, String) is undefined

at ShapeApp.main(ShapeApp.java:14)

You are creating Rectangle object with 3 parameters.

 new Rectangle("3.5", "4.6","42");

But your Rectangle class has only two constructors

1) Consturctor with Zero args 2) Constructor with 2 args

public Rectangle() {
  ......

}

public Rectangle(double theLength, double theHeight )
{ ....
}

You need to add constructor with 3 arguments in Rectangle class (or) Change your object creation to two args constructor.