java中找不到合适的构造器,找不到适合的构造函数

在尝试创建 Polygon 对象时遇到了错误,提示找不到合适的构造器Polygon(int, double, double, double)。问题在于Polygon类定义了默认构造器和一个带有6个参数的构造器,但实例化时提供了4个参数。解决方案是使用正确的构造器,即无参构造器或六个参数的构造器。" 112041983,10535855,TensorFlow实现YOLOv3:macOS版详细教程,"['计算机视觉', '深度学习', 'TensorFlow框架', '目标检测', 'YOLO系列']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I am having issues with getting the TestPolygon.java to run correctly. THe "//Constructor that creates four polygons with any value that are not equal to the defualt value or to each other Polygon[] P_array = {new Polygon(10,5.0,1.0,3.0), new Polygon(6,3,2,5), new Polygon(4,11,4,3), new Polygon(5,12,6,7)}; " line of my code keeps coming back with an error for every new statement saying that "no suitable constructor found for Polygon(int,double,double,double). Picture is attached.

/* File: Polygon.java

* Author: Darren Pirtle Jr.

* Date: November 16, 2016

* Purpose: Design a Java class

* named Polygon

*/

import java.lang.Math;

public class Polygon {

private int numSides;

private double sideLength;

private double xCoord;

private double yCoord;

private double apothem;

private double perimeter;

//Constructor that creates a Polygon using the defaults

public Polygon(){

numSides = 4;

sideLength = 10.0;

xCoord = 0.0;

yCoord = 0.0;

apothem = 5.0;

}

//Constructor that uses the specified numbers

public Polygon(int s,double sL,double x,double y,double a, double p){

setNumSides(s);

setSideLength(sL);

setXCoord(x);

setYCoord(y);

setApothem(a);

}

// A getArea() method that returns a double value for the area of the polygon

public double getArea() {

return .5*apothem*perimeter;

}

// Getter and setter for all data fields

public int setNumSides(int s){

numSides = s;

return numSides;

}

public double setSideLength(double sL){

sideLength = sL;

return sideLength;

}

public double setXCoord(double x){

xCoord = x;

return xCoord;

}

public double setYCoord(double y){

yCoord = y;

return yCoord;

}

public double setApothem(double a){

apothem = a;

return apothem;

}

public double setPerimeter(double p){

perimeter = p;

return perimeter;

}

public int getNumSides() {

return numSides;

}

public double getSideLength() {

return sideLength;

}

public double getXCoord() {

return xCoord;

}

public double getYCoord() {

return yCoord;

}

public double getApothem() {

return apothem;

}

public double getPerimeter() {

return perimeter;

}

//A toString() that displays the values in string format

public String toString(){

return "("+numSides+", "+String.format("%.1f",sideLength)+", "+String.format("%.1f",xCoord)+", "+String.format("%.1f",yCoord)+")";

}

}

/* File: Polygon.java

* Author: Darren Pirtle Jr.

* Date: November 16, 2016

* Purpose: Design a Java class

* named Polygon

*/

//Import necessary packages

import java.util.Scanner;

import java.text.DecimalFormat;

import java.lang.Math;

class TestPolygon{

public static void main(String[] args){

//Constructor that creates one polygon with no argument

Polygon P = new Polygon();

//Constructor that creates four polygons with any value that are not equal to the defualt value or to each other

Polygon[] P_array = {new Polygon(10,5.0,1.0,3.0), new Polygon(6,3,2,5), new Polygon(4,11,4,3), new Polygon(5,12,6,7)};

//Constructor that calls all methods and displays results

System.out.println("toString() results: "+P);

System.out.println("getNumSides() results: "+ P.getNumSides());

System.out.println("getSideLength() results: "+ P.getSideLength());

System.out.println("getXCoord() results: "+ P.getXCoord());

System.out.println("getYCoord() results: "+ P.getYCoord());

System.out.println("getPerimeter() results: "+ P.getPerimeter());

System.out.println("setNumSides(4) results: "+ P.setNumSides(4));

System.out.println("setSideLength(3.0) results: "+ P.setSideLength(3.0));

System.out.println("setXCoord(2.0) results: "+ P.setXCoord(2));

System.out.println("setYCoord(2.0) results: "+ P.setYCoord(2));

for(int i=0; i

{

System.out.println("toString() results: "+P_array[i]);

System.out.println("getNumSides() results: "+ P_array[i].getNumSides());

System.out.println("getSideLength() results: "+ P_array[i].getSideLength());

System.out.println("getXCoord() results: "+ P_array[i].getXCoord());

System.out.println("getYCoord() results: "+ P_array[i].getYCoord());

System.out.println("getPerimeter() results: "+ P_array[i].getPerimeter());

System.out.println("setNumSides(4) results: "+ P_array[i].setNumSides(4));

System.out.println("setSideLength(3.0) results: "+ P_array[i].setSideLength(3.0));

System.out.println("setXCoord(2.0) results: "+ P_array[i].setXCoord(2));

System.out.println("setYCoord(2.0) results: "+ P_array[i].setYCoord(2));

}

}

}

解决方案

The error message says it all:

no suitable constructor found for Polygon(int,double,double,double).

It simply means that Java is unable to find a constructor for class Polygon with argument (int, double, double, double) (which is what you have used when creating a Polygon object)

If you look at your constructors for class Polygon:

You created 2 constructors:

No arguments constructor

Constructor with 6 arguments (int, double, double, double, double, double)

Hence, when creating a Polygon object, ensure you are doing:

new Polygon();

or

new Polygon(int, double, double, double, double, double);

Example:

Polygon p1 = new Polygon();

Polygon p2 = new Polygon(10, 2.5, 3.5, 4.5, 5.5, 6.5);

Polygon p3 = new Polygon(10, 20, 30, 40, 50, 60); //this is ok too

Right now, you are providing only 4 arguments:

new Polygon(10, 5.0, 1.0, 3.0),

^ ^ ^ ^

| | | |

int d d d (d for double)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值