2012-02-04 78 views
-1

我對Java以及Android編程都很陌生。我試圖製作一個計算器。但是,一旦我插入了平方根按鈕,應用程序崩潰,只要我擊中分裂或平方根。我不知道我要去哪裏錯。請幫助?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; 
     }}} 
+2

包括堆棧跟蹤。 – 2012-02-04 13:52:59

回答

2
  1. 使用(int) Math.sqrt(x)不好主意 - sqrt不返回整數。

  2. 當您編寫textView.setText(int) - Andrid認爲,您提供字符串資源的id,並且它無法找到它並崩潰。

使用此:

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

哈,好抓。 – dmon 2012-02-04 14:05:17

+0

謝謝Jin,sqrt現在正在完美工作。但分割按鈕返回與sqrt相同的結果。我無法弄清楚爲什麼。絕對沒有關係。 – Chocolava 2012-02-04 14:22:47

+0

你忘了'break'聲明:) – Jin35 2012-02-04 14:24:04

1

您需要進行檢查的值是確保你沒有被0

分割可否請您發表您收到的錯誤?

+0

沒有錯誤,它只是崩潰。 – Chocolava 2012-02-04 14:25:59

1

那麼,你可以查看$ adb logcat的錯誤。此外,在最後兩個'案例'中,你還沒有放棄「休息」。

+0

我是多麼愚蠢!謝謝。 – Chocolava 2012-02-04 14:31:11