0

我想构建一个简单的 android 应用程序来计算三角形的面积。我有两个 textView 小部件、一个 editText 和一个按钮。当按下按钮时,它会将半径值传递给计算它的函数。我添加了一个变量并将其初始化为 5.0 只是为了测试目的,但是我想将放在 editText 字段中的值称为半径。

这是我的代码。包 com.circle;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
import android.view.*;
public class MainActivity extends Activity 
{
private Button button1;
public EditText editText1;
public TextView textView1, textView2;
double radius = 5.0, area, perimeter;
public double calculateRadius(double radi)
{ 
    area = Math.PI * (radius * radius);
    return area;
}
public double calculatePerimeter(double rad)
{
    perimeter = 2.0 * Math.PI * radius;
    return perimeter;
}   
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);       
    this.button1 = (Button) findViewById(R.id.button1);
    this.editText1 = (EditText) findViewById(R.id.editText1);
    this.textView1 = (TextView) findViewById(R.id.textView1);
    this.textView1 = (TextView) findViewById(R.id.textView2);
    this.button1.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View target) 
        {       
            calculateRadius(radius);   //what's wrong?
            calculatePerimeter(radius);  //what's wrong??
            textView1.setText("" + area);  //what's wrong
            textView2.setText("" + perimeter);  //what's wrong?
        }
    });

}
}
4

2 回答 2

3

你的问题是投射半径。请执行下列操作:

  1. 在 XML 文件中更改编辑文本 -input type=number 即,它只需要数字..
  2. 在单击时,将半径投射到 Double.parseDouble(输入值)的两倍。
  3. 在 XML 文件中将 txt 初始值设置为 0,以避免类型转换问题,因为它无法对空值进行类型转换。

就这样。

于 2013-10-28T12:07:48.313 回答
2
 private double getRadius(){

        double radiusValue = 0;
        try{
            radiusValue= Double.parseDouble(editText1.getText().toString());
            catch (NumberFormatException e){
                // this is not a number. tell the user something here or do something
                Log.e("yourAppTag", Log.getStackTraceString(e));
            }
            return radiusValue;
        }

您需要在您输入半径的任何地方调用它。

此外,您的 calculatePerimiter 和 calcualteArea 方法也没有使用传入的参数。所以摆脱类变量半径,并使用我在这里的方法将半径传递到你的两个计算中。

于 2012-05-03T18:25:22.577 回答