2014-06-26 181 views
0

我无法弄清楚我在这里做错了什么。我刚刚写了一个很好的类似代码。一旦我掌握了如何使用扫描仪类的问题。我正在研究一个程序,它需要一个直角三角形的高度和基数,然后计算周长,面积和斜边。但是它为每个方法返回0.0,我不知道我是否缺少某种语法,或者如果我真的搞砸了我的计算。有人能指出我正确的方向吗?直角三角形计算返回0?

public class RightTriangle { 

    private double height; 
    private double base; 
    private final double hypotenuse = Math.sqrt(Math.pow(height, 2) + Math.pow(base, 2)); 

    public RightTriangle(double triHeight, double triBase) 
    { 
     triHeight = height; 
     triBase = base; 
    } 

    public double getPerimeter() 
    { 
     double perimeter = height + base + hypotenuse; 
     return perimeter; 
    } 

    public double getArea() 
    { 
     double area = (height + base)/2; 
     return area; 
    } 

    public double getHypotenuse() 
    { 
     return hypotenuse; 
    } 
} 

这里是我的主要方法:

import java.util.Scanner; 

    public class CalculateTriangle 
{ 

    public static void main(String[] args) 
    { 
     Scanner triangleHeight = new Scanner(System.in); 
     System.out.print("Enter Triangle Height: "); 
     double height = triangleHeight.nextDouble(); 

     Scanner triangleBase = new Scanner(System.in); 
     System.out.print("Enter Triangle Base: "); 
     double base = triangleBase.nextDouble(); 

     RightTriangle newTriangle = new RightTriangle(height, base); 

     newTriangle.getPerimeter(); 
     double perimeter = newTriangle.getPerimeter(); 

     newTriangle.getArea(); 
     double area = newTriangle.getArea(); 

     newTriangle.getHypotenuse(); 
     double hypotenuse = newTriangle.getHypotenuse(); 

     System.out.println(perimeter); 
     System.out.println(area); 
     System.out.println(hypotenuse); 

    } 
} 
+0

您是否试图通过硬编码值来将'Scanner'从图片中取出?这将是我的第一步(将主程序转换为单元测试)。 –

+0

'扫描仪'对象只需要一次 – rock321987

+0

Jon Skeet感谢您的提示。我实际上需要接受输入,但是我可以在测试时不做。 – user3769297

回答

5

您的代码:

public RightTriangle(double triHeight, double triBase) 
{ 
    triHeight = height; 
    triBase = base; 
} 

应该是:

public RightTriangle(double triHeight, double triBase) 
{ 
    height = triHeight; 
    base = triBase; 
} 
1

使这个作为你的函数 - >

private double hypotenuse; 

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

,因为你正在计算斜边的值初始化高度或基地之前,这就是为什么你得到0

还你的构造应该是 - >

height=triHeight; 
bas=triBase; 

希望这帮助。