2013-05-08 26 views
0

朋友我搜索了很多,但沒有得到我的問題的答案。我正在嘗試製作一個android計算器。一個簡單的,其實它只是我的更大的應用程序的單個模塊...在android中面對計算器的應用程序錯誤

在這首先,我需要用戶輸入第一和第二個sunber,並選擇他是否想添加,分,多,分或獲得mod ..然後有一個文本視圖在其中顯示結果。

這是我使用的代碼:

Java代碼:

package com.droidacid.apticalc; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class numSys extends Activity{ 


EditText etnumber1; 
EditText etnumber2; 

Button badd; 
Button bsub; 
Button bmul; 
Button bdiv; 
Button bmod; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.numsys); 

    etnumber1 = (EditText) findViewById(R.id.number1); 
    etnumber2 = (EditText) findViewById(R.id.number2); 



    String number1 = etnumber1.getText().toString(); 
    String number2 = etnumber2.getText().toString(); 

    final Double number1D = Double.parseDouble(number1); 
    final Double number2D = Double.parseDouble(number2); 

badd.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    double resultD = number1D + number2D; 
    String result = "result :"+resultD; 
    TextView tvresult = (TextView) findViewById(R.id.tvresult); 
    tvresult.setText(result); 
    } 
}); 

bsub.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    double resultD = number1D - number2D; 
    String result = "result :"+resultD; 
    TextView tvresult = (TextView) findViewById(R.id.tvresult); 
    tvresult.setText(result); 
    } 
}); 

bmul.setOnClickListener(new View.OnClickListener() { 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

double resultD = number1D * number2D; 
String result = "result :"+resultD; 
TextView tvresult = (TextView) findViewById(R.id.tvresult); 
tvresult.setText(result); 
} 
}); 

bdiv.setOnClickListener(new View.OnClickListener() { 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

double resultD = number1D/number2D; 
String result = "result :"+resultD; 
TextView tvresult = (TextView) findViewById(R.id.tvresult); 
tvresult.setText(result); 
} 
}); 

bmod.setOnClickListener(new View.OnClickListener() { 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

double resultD = number1D % number2D; 
String result = "result :"+resultD; 
TextView tvresult = (TextView) findViewById(R.id.tvresult); 
tvresult.setText(result); 
} 
}); 



} 

} 

這是logcat的錯誤:

05-04 10:24:18.098: E/AndroidRuntime(1321): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.droidacid.apticalc/com.droidacid.apticalc.numSys}: java.lang.NumberFormatException: 

請不要評價此職位爲陰性。我只是試圖學習並試圖解決這個問題,因爲這超過了24小時。嘗試了一切張貼在堆棧溢出。

由於

+0

檢查字符串是否可以解析爲double(空格,字符不能被解析) – 2013-05-08 13:36:38

回答

1

這可能是你的問題:

String number1 = etnumber1.getText().toString(); 
    String number2 = etnumber2.getText().toString(); 

    final Double number1D = Double.parseDouble(number1); 
    final Double number2D = Double.parseDouble(number2); 

你試圖解析,在這一點上,空的EditText爲雙精度值。要麼是這樣,要麼你在EditText中有一些你正在嘗試解析的默認文本。

這(可能)導致NumberFormatException。

0
final Double number1D = Double.parseDouble(number1); 
final Double number2D = Double.parseDouble(number2); 

異常意味着number1number2不能轉換到double。嘗試trim的數字1和數字2串