gpt4 book ai didi

java - 如何使用在 Scanner 类的另一个类中创建的方法来向该方法提供数据?

转载 作者:行者123 更新时间:2023-12-02 02:31:53 27 4
gpt4 key购买 nike

我试图让用户输入三角形的底边和高度,并用它们计算斜边。

我得到的错误是线程“main”java.lang.StackOverflowError中的异常并指向我询问用户的第42行。

下面是实际代码:

public class RTTriangle {
private double base; // properties
private double height;
private double hypotenuse;

public RTTriangle() // Constructors
{
base = 2;
height = 0;
}
public RTTriangle(double BASE2, double HEIGHT2) // Constructors
{
base = BASE2;
height = HEIGHT2;
}

public void setBase(double BasE) // setters
{
base = BasE;
}

public void setHeight(double Height)
{
height = Height;
}

public double getBase() // getters
{
return base;
}

public double getHeight()
{
return height;
}

public double getHypotenuse(double x, double y)
{
hypotenuse = Math.sqrt(Math.pow(base, 2.0) + Math.pow(height, 2.0));
return hypotenuse = getHypotenuse(base, height);
}

public double getArea()
{
double area;
area = base * height;
return area;
}

public double getPerimeter()
{
double Perimeter;
Perimeter = height + base + this.getHypotenuse();
return Perimeter;
}

}

我试图搞乱它,但我似乎仍然无法工作。这就是我将其调用到我的其他类(class)的方式

import java.util.Scanner;

public class RTTriangleDemo {

public static void main(String[] args)
{

double base;
double height;

Scanner SCAN = new Scanner(System.in);
RTTriangle TRI1 = new RTTriangle();
RTTriangle TRI2 = new RTTriangle();

System.out.print("Enter the base of the Triangle: " );
base = SCAN.nextDouble();
System.out.print("Enter the length of the Triangle: " );
height = SCAN.nextDouble();

System.out.print("The hypotenuse is: " + TRI1.getHypotenuse(base, height));

如果有人能帮助我,我将非常感激。

最佳答案

通过以下方法:

public double getHypotenuse(double x, double y)
{
hypotenuse = Math.sqrt(Math.pow(base, 2.0) + Math.pow(height, 2.0));
return hypotenuse = getHypotenuse(base, height);
}

将最后一行更改为

return hypotenuse;

剩下的就是递归调用,您不需要它。它只会无限地调用自己,直到你用完堆栈空间,导致程序崩溃。

<小时/>

与您的问题无关,但您有一个采用三角形底边和高度的构造函数。我会考虑使用它,这样您就不必将这些值传递给 hypotenuse 方法。

关于java - 如何使用在 Scanner 类的另一个类中创建的方法来向该方法提供数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962649/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com