2014-06-26 60 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; 

希望這幫助。