0

I have this constructor with a function however when i compile my main method i non-static method area cannot be referenced from a static context. I know its a simple fix i just cant quite get there. Thanks

public class Rect{
     private double x, y, width, height;

     public Rect (double x1, double newY, double newWIDTH, double newHEIGHT){
       x = x1;
       y = newY;
       width = newWIDTH;
       height = newHEIGHT;

    }
    public double area(){
       return (double) (height * width);
}

and this main method

public class TestRect{

    public static void main(String[] args){
        double x = Double.parseDouble(args[0]);
        double y = Double.parseDouble(args[1]);
        double height = Double.parseDouble(args[2]);
        double width = Double.parseDouble(args[3]);
        Rect rect = new Rect (x, y, height, width);
        double area = Rect.area();     

    }    
}

2 Answers 2

2

You would need to call the method on an instance of the class.

This code:

Rect rect = new Rect (x, y, height, width);
double area = Rect.area();

Should be:

Rect rect = new Rect (x, y, height, width);
double area = rect.area();
              ^ check here
                you use rect variable, not Rect class
                Java is Case Sensitive
Sign up to request clarification or add additional context in comments.

Comments

0

You have 2 options.

  1. Make the method static.
  2. Create an instance of the class which implements the method and call the method using the instance.

Which one to chose is purely a design decision.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.