2013-05-08 29 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串