我是编程新手,所以如果我问一个可以轻松修复的问题,请原谅我。我的程序有一个带有main的测试器类。当我将它发送到我的RegularPolygon类时,它将它发送到错误的构造函数。我有两个构造函数。 1没有参数
public RegularPolygon()
{
myNumSides = 5;
mySideLength = 30;
}//end default constructor
和我的第二个,有perameters。
public RegularPolygon(int numSides, double sideLength)
{
myNumSides = numSides;
mySideLength = sideLength;
}// end constructor
在我的测试人员课程中,我有以下两行:
RegularPolygon shape = new RegularPolygon(numSides, sideLength);
shape.menu();
在测试类的早期声明并初始化了numSides和sideLength。
所以我想要发生的是,测试者类将numSides和sideLength发送到第二个构造函数并在该类中使用它。但它只使用默认的构造函数,因此破坏了程序的其余部分。有人可以帮帮我吗?
对于那些想要查看更多代码的人:请转到
public double vertexAngle()
{
System.out.println("The vertex angle method: " + myNumSides);// prints out 5
System.out.println("The vertex angle method: " + mySideLength); // prints out 30
double vertexAngle;
vertexAngle = ((myNumSides - 2.0) / myNumSides) * 180.0;
return vertexAngle;
}//end method vertexAngle
public void menu()
{
System.out.println(myNumSides); // prints out what the user puts in
System.out.println(mySideLength); // prints out what the user puts in
goToGraphic();
calcR(myNumSides, mySideLength);
calcr(myNumSides, mySideLength);
print();
}// end menu
这是我的整个测试人员课程:
public static void main(String[] arg)
{
int numSides;
double sideLength;
Scanner keyboard = new Scanner(System.in);
System.out.println("Welcome to the Regular Polygon Program!");
System.out.println();
System.out.print("Enter the number of sides of the polygon ==> ");
numSides = keyboard.nextInt();
System.out.println();
System.out.print("Enter the side length of each side ==> ");
sideLength = keyboard.nextDouble();
System.out.println();
RegularPolygon shape = new RegularPolygon(numSides, sideLength);
shape.menu();
}//end main
为了测试它,我发送了numSides 4和sideLength 100。
答案 0 :(得分:1)
public RegularPolygon() {
System.out.println("Default constructor called.");
myNumSides = 5;
mySideLength = 30;
}//end default constructor
public RegularPolygon(int numSides, double sideLength) {
System.out.println("Two-argument constructor called.");
System.out.println("numSides = " + numSides + ", sideLength = " + sideLength);
myNumSides = numSides;
mySideLength = sideLength;
}// end constructor
因此,有一种形式的调试可以清除对正在调用的构造函数以及numSides
和sideLength
的值应该被初始化的疑问。您可以在任何其他方法中遵循此调试模式来验证,是的,这确实是被调用的方法,是的,此方法使用的值确实是我打算使用的值。
在你的测试课上,我会做这样的事情:
System.out.println("numSides = " + numSides + ", sideLength = " + sideLength);
System.out.println("Instantiating RegularPolygon with numSides & sideLength");
RegularPolygon shape = new RegularPolygon(numSides, sideLength);
这只是调试101.但这里的重点是你假设你的代码由于Culprit A而出乎意料地行为,但实际上,有几个不同的东西可能导致问题。您确信正在调用错误的构造函数,因此这些代码片段将为您提供有关正在发生的事情的一些证据。可能是正在调用错误的构造函数,或者可能是正在调用正确的构造函数但是使用了错误的参数。
无论哪种方式,我们都需要查看测试人员类中的更多代码,看看可能是什么原因,因为您在答案中提供的代码绝对会导致调用双参数构造函数。 ..但你没告诉我们你传递的是什么价值。