我是Java和Android编程的新手。我试图制作一个计算器。但是一旦我插入了平方根按钮,每当我点击分割或平方根时,应用程序就会崩溃。我不知道我哪里出错了。帮助,好吗?
public class MainScreen extends Activity implements OnClickListener {
EditText edit1, edit2;
TextView txt;
Button butt, diff, mul, div, sqr, per;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edit1 = (EditText)findViewById(R.id.editText1);
edit2 = (EditText)findViewById(R.id.editText2);
txt = (TextView)findViewById(R.id.textView1);
butt = (Button)findViewById(R.id.button1);
butt.setOnClickListener(this);
diff = (Button)findViewById(R.id.button2);
diff.setOnClickListener(this);
mul = (Button)findViewById(R.id.button3);
mul.setOnClickListener(this);
div = (Button)findViewById(R.id.button4);
div.setOnClickListener(this);
sqr = (Button)findViewById(R.id.button5);
sqr.setOnClickListener(this);
per = (Button)findViewById(R.id.button6);
per.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String a;
// TODO Auto-generated method stub
String b;
Integer sum, sub, mul, div;
Double x ;
a= edit1.getText().toString();
b= edit2.getText().toString();
x=(double) Integer.parseInt(a);
switch (v.getId()) {
case R.id.button1:
sum = Integer.parseInt(a)+ Integer.parseInt(b);
txt.setText(sum.toString());
break;
case R.id.button2:
sub = Integer.parseInt(a)- Integer.parseInt(b);
txt.setText(sub.toString());
break;
case R.id.button3:
mul = Integer.parseInt(a)* Integer.parseInt(b);
txt.setText(mul.toString());
break;
case R.id.button4:
div = (Integer.parseInt(a))/(Integer.parseInt(b));
txt.setText(div.toString());
case R.id.button5:
txt.setText((int) Math.sqrt(x));
default:
break;
}}}
答案 0 :(得分:2)
使用(int) Math.sqrt(x)
是个坏主意 - sqrt不会返回整数。
当你写textView.setText(int)
时 - Andrid认为,你提供了字符串资源的id,它找不到它并崩溃。
使用此:
case R.id.button5:
txt.setText(String.valueOf(Math.sqrt(x)));
break;
答案 1 :(得分:1)
你需要检查be的值,以确保你没有除以0。
您能否发布您收到的错误?
答案 2 :(得分:1)
好吧,您可以查看$ adb logcat
的错误。此外,在最后两个“案例”中,你还没有“休息”。