简体   繁体   中英

method in class cannot be applied to given types error

// CentredBall class:
  2 //   Class attribute: quantity - number of balls created
  3 //   Instance attributes: colour, radius, centre
  4 import java.awt.*;
  5 
  6 class CentredBall {
  7 
  8     /************** Data members **********************/
  9     private static int quantity = 0;
 10 
 11     private String colour;
 12     private double radius;
 13     private Point  centre;
 14     private int xCoord, yCoord;
 15 
 16     /************** Constructors **********************/
 17     //  Default constructor creates a yellow, radius 10.0 ball centred at origin (0,0)
 18     public CentredBall()    {
 19         this.colour = "yellow";
 20         this.radius = 10.0;
 21     }   
 22     
 23     public CentredBall(String colour, double radius, Point centre)  {
 24         setColour(colour);
 25         setRadius(radius);
 26         setCentre(xCoord, yCoord);
 27         quantity++;
 28     }   
 29     
 30     public CentredBall(String colour, double radius, int xCoord, int yCoord)    {
 31         setColour(colour);
 32         setRadius(radius);
 33         setxCoord(xCoord);
 34         setyCoord(yCoord);
 35         quantity++;
 36     }   
 37     
 38     /**************** Accessors ***********************/
 39     public static int getQuantity() {
 40         return quantity;
 41     }   
 42     public String getColour()   {
 43         return this.colour;
 44     }   
 45     public double getRadius()   {
 46         return this.radius;
 47     }
 48     public Point getCentre()    {
 49         return this.centre;
 50     }
 51     public int getxCoord()  {
 52         return this.xCoord;
 53     }
 54     public int getyCoord()  {
 55         return this.yCoord;
 56     }
 57 
 58     /**************** Mutators ************************/
 59     public void setColour(String colour)    {
 60         this.colour = colour;
 61     }
 62     public void setRadius(double radius)    {
 63         this.radius = radius;
 64     }
 65     public void setCentre(Point centre) {
 66         this.centre = centre;
 67     }
 68     public void setxCoord(int xCoord)   {
 69         this.xCoord = xCoord;
 70     }
 71     public void setyCoord(int yCoord)   {
 72         this.yCoord = yCoord;
 73     }
 74 
 75     /***************** Overriding methods ******************/
 76     // Overriding toString() method
 77     public String toString() {
 78         return "[" + getColour() + ", " + getRadius() + ", " + getxCoord() + ", " + getyCoord() + "]";
 79     }
 80 
 81     // Overriding equals() method
 82     public boolean equals(Object obj) {
 83         if  (obj instanceof CentredBall)    {
 84             CentredBall ball = (CentredBall) obj;
 85             return  this.getColour().equals(ball.getColour()) &&
 86                     this.getRadius() == ball.getRadius() &&
 87                     this.getxCoord() == ball.getxCoord() &&
 88                     this.getyCoord() == ball.getyCoord();
 89         }
 90         else
 91             return false;
 92     }

I keep getting this error

CentredBall.java:26: error: method setCentre in class CentredBall cannot be applied to given types;
            setCentre(xCoord, yCoord);
            ^
required: Point
found: int,int
reason: actual and formal argument lists differ in length
1 error

I have a few questions. pls help.

  1. how come the default constructor does not have a parameter for the centre at origin? I tried doing this("yellow", 10.0, (0,0)); but it doesn't work

  2. what is the use of the overriding methods? Is there any error for the toString and equals overriding methods I have created?

使用参数中的Point centre或创建一个新Point,例如Point p = new Point(xCoord, yCoord)

You are getting the error because the setCentre() method expects a Point and not 2 ints:

setCentre(new Point(xCoord, yCoord));

Also for:

1.Why don't you just add another constructor for the origin point:

public CentredBall(String colour, double radius) {
setCentre(0,0);

2.You've written this but you don't know why you've written it? You override them so that they behave the way you want them to for your objects.

You are trying to pass xCoord, yCoord in place of a parameter of type Point. Instead pass

new Point(xCoord, yCoord)

This constructs a Point object that the method can handle.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM