Android,请告诉我我的错误

时间:2012-02-04 13:50:00

标签: android debugging

我是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;
        }}}

3 个答案:

答案 0 :(得分:2)

  1. 使用(int) Math.sqrt(x)是个坏主意 - sqrt不会返回整数。

  2. 当你写textView.setText(int)时 - Andrid认为,你提供了字符串资源的id,它找不到它并崩溃。

  3. 使用此:

    case R.id.button5:
        txt.setText(String.valueOf(Math.sqrt(x)));
        break;
    

答案 1 :(得分:1)

你需要检查be的值,以确保你没有除以0。

您能否发布您收到的错误?

答案 2 :(得分:1)

好吧,您可以查看$ adb logcat的错误。此外,在最后两个“案例”中,你还没有“休息”。