Skip to content
Advertisement

Don’t want to use the initialize the given height/weight on the draw() method, Instead I want to use the main driver

So, I been trying to figured out how can I able draw the shape of a rectangle by given the height and the width on the main driver, but I was having trouble because somehow I couldn’t able to draw the rectangle, instead I was able to put the values inside of the draw() methods.

For the draw() method was supposed to do this description: The draw method must “draw” the rectangle using System.out.println(). Simply print width number of asterisks in height number of lines.

The interface Shape represents a closed geometrical shape. It has three methods.

  1. draw(): This has no parameters and returns void. The method draws the shape on
    the screen.
  2. getArea(): The method has no parameters and returns the area of the shape. The
    return type is double.
  3. getPerimeter(): The method has no parameters and returns the perimeter of the
    shape. The return type is double.
public class Rectangle implements Shape {
    
        private double width;
        private double height;
        
        public Rectangle(double width, double height) {
            this.width = width;
            this.height = height;
        }
    
        public double getWidth() {
            return width;
        }
    
        public void setWidth(double width) {
            this.width = width;
        }
    
        public double getHeight() {
            return height;
        }
    
        public void setHeight(double height) {
            this.height = height;
        }
        
        @Override
        public void draw() {
    /**
     * Don't want to use the initialize given height/weight
     * Instead use the main driver 
     * 
     */
            
            double height = 3,width = 3;
            
            for(int i=0; i<height;i++) {
                for(int w =0; w<width; w++) {
                    System.out.print("*");
                }
                System.out.println(" ");
                }
            }
    
        @Override
        public double getArea() {
            return width*height;
        }
    
        @Override
        public double getPerimeter() {
            return 2*(height+width);
        }
    
         public boolean equals(Object obj) 
            {
                // check that the type of the parameter is Rectangle
                if( !(obj instanceof Rectangle) )
                    return false;
                
                // we already know that obj is of type Rectangle, so it's safe to cast
                Rectangle rectangleObject = (Rectangle) obj;
                
                // return true or false depending on whether length and width have the same value
                return height == rectangleObject.height && width == rectangleObject.width;     
            }
         
         public String toString() {
             String info = "Area: " + getArea() + "n" + "Perimeter:" + getPerimeter();
             return info;
         }
         
         public static void main(String[] args) {
                Shape rectangle1 = new Rectangle(5,5);
                rectangle1.draw();
                
                
            }
    
    }

The output should look like:

Shape rectangle1 = new Rectangle(4, 5); 
rectangle1.draw();
****
****
****
****
****

Advertisement

Answer

Use the height and width member variables that are part of the Rectangle object instance. In your example, the width would be 4 and the height would be 5 based one the object instantiation via: Shape rectangle1 = new Rectangle(4, 5);

Your draw method would look like:

@Override
        public void draw() {
            
            for(int i=0; i<this.height;i++) {
                for(int w =0; w<this.width; w++) {
                    System.out.print("*");
                }
                System.out.println(" ");
                }
            }
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement