2013-07-30 100 views
4

我是一名Android編程初學者,我試圖用3個editText字段編寫一個簡單的計算器。 其中2個用作輸入,3個用作輸出結果。 當我點擊「+」按鈕時,我希望它輸出2個數字的總和。 但我得到一個奇怪的號碼,而不是例如2 + 3 = 2.131230724E9 我嘗試過網解決,但無法找到特定問題....謝謝...爲什麼我的editText不會在android中顯示正確的輸出?

final double tf1 = Double.parseDouble(String.valueOf(R.id.editText1)); 
final double tf2 = Double.parseDouble(String.valueOf(R.id.editText2)); 


    Button btplus = (Button)findViewById(R.id.button1); 


    btplus.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) 
     { 
      double tf3; 
      tf3 = tf1 + tf2; 
      EditText result = (EditText)findViewById(R.id.editText3); 
      result.setText(String.valueOf(tf3)); 
     } 
    }); 
+0

你有沒有初始化你的editexts。 'R.id.editText1'引用R.java中的int值 – Raghunandan

+0

這不是從'EditText' - >'String.valueOf(R.id.editText1)'得到數字,這就是你的問題。 – g00dy

回答

2

R.id.editText1指的是R.java中的int值。

您需要首先在onCreate中初始化EditText。如果你不想final修飾符聲明的EditText的作爲類成員

final EditText ed1 = (EditText) findViewById(R.id.editText1); 
    final EditText ed2 = (EditText) findViewById(R.id.editText1); 
    final EditText result = (EditText)findViewById(R.id.editText3); 

然後

Button btplus = (Button)findViewById(R.id.button1); 
    btplus.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v) 
    { 
     double tf3; 
     double tf1 =Double.parseDouble(ed1.getText().toString()); 
     double tf2 =Double.parseDouble(ed2.getText().toString()); 
     tf3 = tf1 + tf2; 
     result.setText(String.valueOf(tf3)); 
    } 
    }); 
+0

不錯的答案:)。 –

+0

問題解決了,謝謝你的幫助。 – Sierion

+0

@ user2634069很高興幫助。 – Raghunandan

0

取而代之的是:

result.setText(String.valueOf(tf3)); 

使用此:

result.setText("" + tf3); 
2

的問題是在你的代碼:

final double tf1 = Double.parseDouble(String.valueOf(R.id.editText1)); 
final double tf2 = Double.parseDouble(String.valueOf(R.id.editText2)); 

您沒有采用EditText的值,而是對對象的引用。您需要更改這個這樣的事情

final double tf1 = Double.parseDouble(((EditText)findViewById(R.id.editText1)).getText().toString()); 
final double tf2 = Double.parseDouble(((EditText)findViewById(R.id.editText2)).getText().toString()); 

此外,您應該包括在按鈕的OnClick方法此行,所以當你在點擊該按鈕將採取的當前值。

+0

謝謝,我試過了,現在由於某種原因它卡住了,沒有顯示任何組件(只有白色屏幕,它變成黑色並凍結,直到它被迫關閉......)任何想法爲什麼......? – Sierion

+0

你做了什麼更改?你可以粘貼完整的onCreate方法,檢查是否有其他錯誤?此外,粘貼logcat輸出,因爲這可以幫助找到問題。 – AitorTheRed

+0

保護無效onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final double tf1 = Double.parseDouble(((EditText)findViewById(R.id.editText1))。getText()。toString()); final double tf2 = Double.parseDouble(((EditText)findViewById(R.id.editText2))。getText()。toString()); Button btplus =(Button)findViewById(R.id.button1); btplus.setOnClickListener(new View。OnClickListener(){ public void onClick(View v) { double tf3; tf3 = tf1 + tf2; EditText result =(EditText)findViewById(R.id.editText3); result.setText(String.valueOf(tf3)); } }); }' – Sierion

0

嘗試以下操作:

EditText editText1 = (EditText) findViewById(R.id.editText1); 
EditText editText2 = (EditText) findViewById(R.id.editText2); 

final double tf1 = Double.parseDouble(editText1.getText().toString()); 
final double tf2 = Double.parseDouble(editText2.getTExt().toString()); 

R.id僅僅是一個參考整數和這就是爲什麼在將兩個id整數相加時得到奇數,而不是文本框中的實際值。

0
final double tf1 = Double.parseDouble(edittext1.getText().toString()); 
final double tf2 = Double.parseDouble(edittext2.getText().toString()); 


Button btplus = (Button)findViewById(R.id.button1); 


btplus.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v) 
    { 
     double tf3 = 0; 
     tf3 = tf1 + tf2; 
     EditText result = (EditText)findViewById(R.id.editText3); 
     result.setText(String.valueOf(tf3)); 
    } 
}); 
相關問題