0

我新。我有 2 个 editText 和 1 个 TextView,1 个按钮。我想从 2 个输入中求和。如果我输入所有editText,它就成功了。但如果我不输入,应用程序就会停止。

package panda.c;

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




public class calculate extends Activity implements OnClickListener {
/** Called when the activity is first created. */

EditText input1,input2;
Button sum;
TextView total;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.calcu);

input1 = (EditText) findViewById(R.id.input1);
input2 = (EditText) findViewById(R.id.input2);
total = (EditText) findViewById(R.id.total);
sum = (Button) findViewById(R.id.sum);
sum.setOnClickListener(this);

}

public void onClick(View v) {

int inputt1 = Integer.parseInt(input1.getText().toString());
int inputt2 = Integer.parseInt(input2.getText().toString());

switch (v.getId()) {                    
case R.id.sum:

sum.setText(Integer.toString(inputt1+inputt2));

break;
default:
break;
}}}

我什么都没输入。我只是单击 sum,然后程序停止了。但是如果我输入所有editText,我点击sum,它的工作。为什么?我想如果我不输入,然后单击 sum,应用程序仍然运行。

4

4 回答 4

2

它被称为NullPointerException. 您正在尝试解析nullinteger. 您需要将解析语句括在一个trycatchNullPointerException,并将一些默认值设置为inputt1andinputt2或通知用户将一些值放在 aToast中。

更正

这不是一个NullPointerException它是一个NumberFormatException

于 2013-05-19T07:51:36.410 回答
2

这是因为如果一个字段留空, Integer.parseInt() 将失败。如果该字段留空,则应将默认值设置为 0,这样它就不会强制关闭。

这是一个简单的解决方案来检查它是否为空并使用 0 作为默认值:

int inputt1 = input1.getText().toString().equals("") ? 0 : Integer.parseInt(input1.getText().toString());
int inputt2 = input2.getText().toString().equals("") ? 0 : Integer.parseInt(input2.getText().toString());

另外,设置android:inputType="number"为您的EditText,这样您就可以将输入限制为仅数字。

编辑:更新代码以使其与所有 API 级别兼容。

于 2013-05-19T07:51:39.297 回答
1

这是因为您在其中使用Integer.parseInt()和解析""。这肯定会给你 NumberFormat 异常。

尝试这个...

if(!(input1.getText().toString().trim().equals(""))){
inputt1 = Integer.parseInt(input1.getText().toString());
}

其他输入也一样..

希望这可以帮助,..

于 2013-05-19T07:52:35.037 回答
0

OnClick() 方法中的代码片段可能如下:

int inputt1 = 0;
int inputt2 = 0;
try {
    inputt1 = Integer.parseInt(input1.getText().toString());
    inputt2 = Integer.parseInt(input2.getText().toString());
}
catch (NumberFormatException e) {
//notify the user here somehow or just leave empty
//or just return, if you don't want to sum default values
}
于 2013-05-19T09:17:27.990 回答