2

因此,我創建了一個應用程序,其主要用途是計算三角形的面積,周長和inradius。用戶應該輸入三個類型爲double的值。 &無論他們點擊哪個按鈕,都應該在結果視圖中吐出答案。用戶可以點擊任何按鈕(哪個並不重要)。如果他們先點擊「區域」按鈕&然後決定點擊「周長」按鈕,結果應該改變。下面是一張圖片,讓您瞭解它的外觀:(http://tinypic.com/r/v3ncyh/8)。我不知道我是否正確編程,因爲我的值看起來完全不正確&我不認爲我的視圖正確連接到我的代碼。這段代碼的第一部分是我的三角形類,它包含了我所有的用於計算面積,周長和inradius的方法,所有我的獲取/設置器&。第二部分是我的活動,這是我的應用程序的主要活動(僅適用於&)。如何使用視圖計算面積,周長和半徑

公共類三角{

// instance variables 
private double sideA; 
private double sideB; 
private double sideC; 

// Getters and setters 
public double getSideA() { 
    return sideA; 
} 

public void setSideA(double sideA) { 
    this.sideA = sideA; 
} 

public double getSide2B() { 
    return sideB; 
} 

public void setSideB(double sideB) { 
    this.sideB = sideB; 
} 

public double getSideC() { 
    return sideC; 
} 

public void setSideC(double sideC) { 
    this.sideC = sideC; 
} 

// Constructor 
public Triangle(double sideA, double sideB, double sideC) { 
    this.sideA = sideA; 
    this.sideB = sideB; 
    this.sideC = sideC; 
} 

// Three methods... 
public double getPerimeter() { 

    return sideA + sideB + sideC; 
} 

public double getArea() { 

    double s = 1/2 * (sideA + sideB + sideC); 
    double area = Math.sqrt(s*(s-sideA)*(s-sideB)*(s-sideC)); 

    return area; 
} 

public double getInRadius() { 

    double r = ((-sideA + sideB + sideC)*(sideA - sideB + sideC)*(sideA + sideB - sideC))/(4*(sideA + sideB + sideC)); 
    double answer = Math.sqrt(r); 

    return r; 
} 

}

公共類TriangleComputationActivity延伸活動{

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_triangle_computation); 

    // Declare our View variables and assign them the Views from the layout file 
    final TextView lengthOne = (TextView) findViewById(R.id.lengthOne); 
    final TextView lengthTwo = (TextView) findViewById(R.id.lengthTwo); 
    final TextView lengthThree = (TextView) findViewById(R.id.lengthThree); 
    final TextView result = (TextView) findViewById(R.id.result); 

    Button areaButton = (Button) findViewById(R.id.area); 
    Button perimeterButton = (Button) findViewById(R.id.perimeter); 
    Button inradiusButton = (Button) findViewById(R.id.inradius); 

    final Triangle triangle = new Triangle((double)lengthOne.getInputType(), (double)lengthTwo.getInputType(),(double)lengthThree.getInputType()); 

    // Methods in Action... 
    areaButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      result.setText(triangle.getArea()); 

     } 
    }); 

    perimeterButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      result.setText(triangle.getPerimeter()); 
     } 
    }); 

    inradiusButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      result.setText(triangle.getInRadius()); 
     } 
    }); 

} 

回答

1

TextView.getInputType()沒有返回值是對你有用。它與TextView的實際文本無關。

您應該改用TextView.getText()。您必須使用Double.parseInt()Double.valueOf()將其轉換爲雙倍數。如果是我,我會在這些TextView上設置android:inputType="numberDecimal"

+0

我會在哪裏準確完成轉換? &我已經將inputTypes設置爲numberDecimal。 – Chris 2014-10-02 04:40:10

+0

獲取文本,轉換爲雙精度,然後將雙精度傳遞給三角構造函數。現在你正在獲取'onCreate'裏面的文本,而且從來沒有其他地方。當用戶按下一個按鈕時,你可能需要一些方法來提取這些數字,否則當'onCreate'運行時,你的三角形將始終具有文本字段中的任何值。 – Karakuri 2014-10-02 12:58:57