所以我想制作一个圆形计算器。一个人需要添加半径,直径,S或P,程序应该给出所有的答案,但是当我添加一件事情时,程序会使用我添加到程序中的所有公式。我希望程序使用那些特定的公式,例如,当我输入radius(r)时,程序会使用这些公式(我们为它插入r)而不是其他的公式。 我希望你们明白我的意思,抱歉我的英文不好,希望有人能帮忙。麻烦制作圆形计算器
public void onButtonClick(View v) {
EditText a1 = (EditText) findViewById(R.id.TFnum1);
EditText a2 = (EditText) findViewById(R.id.TFnum2);
EditText a3 = (EditText) findViewById(R.id.TFnum6);
EditText a4 = (EditText) findViewById(R.id.TFnum7);
TextView tv = (TextView) findViewById(R.id.TFnum7); //P
TextView tv1 = (TextView) findViewById(R.id.TFnum6); //S
TextView tv2 = (TextView) findViewById(R.id.TFnum2); //d
TextView tv3 = (TextView) findViewById(R.id.TFnum1); //r
boolean flag = false;
double num1, num2, num6, num7, ans;
num1 = ParseDouble(a1.getText().toString());
num2 = ParseDouble(a2.getText().toString());
num6 = ParseDouble(a3.getText().toString());
num7 = ParseDouble(a4.getText().toString());
ans = 0;
//when inserting r
//d
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = 2 * num1;
tv2.setText(ans + "");
//S
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = 3.14 * (num1 * num1);
tv1.setText(ans + "");
//P
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = num1 * 3.14 * 2;
tv.setText(ans + "");
//when inserting d
//r
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = num2/2;
tv3.setText(ans + "");
//S
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = (num2/2) * (num2/2) * 3.14;
tv1.setText(ans + "");
//P
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = (num2/2) * 3.14 * 2;
tv.setText(ans + "");
//when inserting S
//r
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = Math.sqrt(num6/3.14);
tv3.setText(ans + "");
//d
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = Math.sqrt(num6/3.14) * 2;
tv2.setText(ans + "");
//P
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = (Math.sqrt(num6/3.14)) * 2 * 3.14;
tv.setText(ans + "");
//when inserting P
//r
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = num7/6.28;
tv3.setText(ans + "");
//d
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = (num7/6.28) * 2;
tv2.setText(ans + "");
//S
if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
else ans = (num7/6.28) * (num7 /6.28) * 3.14;
tv1.setText(ans + "");
}
private double ParseDouble(String number) {
if (number!= null && number.length() > 0) {
try {
return Double.parseDouble(number);
} catch(Exception e) {
return -1;// Will return -1 in case of exception, you can change it with another value
}
}
return 1;
}
你的if(v.getId()== R.id.Badd)if(num2 == 0)flag = true;'总是一样的!并且'v.getId()'返回什么值'' – Prashant
是的,看起来你复制/粘贴了'if'检查,并忘记将它们专门化为实际案例 - 顺便说一句可以用一个''getId()''开关'也许有点清洁。 – ChiefTwoPencils