Android 如果没有';不要输入任何东西
我是新来的。我有2个编辑文本和1个文本视图,1个按钮。我想从2输入求和。如果我输入所有editText,它将成功。但是如果我没有输入,应用程序就会停止Android 如果没有';不要输入任何东西,android,button,android-edittext,Android,Button,Android Edittext,我是新来的。我有2个编辑文本和1个文本视图,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; imp
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,然后程序就停止了。但如果我输入所有的编辑文本,我点击了sum,它的工作。为什么?我希望如果我不输入,然后单击“求和”,应用程序仍然运行。它被称为
NullPointerException
。您正在尝试将null
解析为integer
。您需要将解析语句封装在try
块和catch
中NullPointerException
,并将一些默认值设置为input1
和input2
,或者通知用户使用Toast
放入一些值
更正
它不是一个
NullPointerException
它是一个NumberFormatException
它被称为NullPointerException
。您正在尝试将null
解析为integer
。您需要将解析语句封装在try
块和catch
中NullPointerException
,并将一些默认值设置为input1
和input2
,或者通知用户使用Toast
放入一些值
更正
它不是
NullPointerException
而是NumberFormatException
因为如果字段留空,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级别兼容。这是因为如果字段留空,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级别兼容。这是因为您正在使用
Integer.parseInt()
并在其中解析“”
。这肯定会给你带来NumberFormat异常
试试这个
if(!(input1.getText().toString().trim().equals(""))){
inputt1 = Integer.parseInt(input1.getText().toString());
}
其他输入也一样
希望这有帮助,…这是因为您正在使用
Integer.parseInt()
并在其中解析“”
。这肯定会给你带来NumberFormat异常
试试这个
if(!(input1.getText().toString().trim().equals(""))){
inputt1 = Integer.parseInt(input1.getText().toString());
}
其他输入也一样
希望这有帮助,…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
}
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
}
你能发布你的logcat错误吗?没有错误@JackTurkey,我输入了sum.setText(Integer.toString(input1+input2)),但是如果我不输入任何东西,程序就会停止。你能发布你的logcat错误吗?没有错误@JackTurkey,我输入了sum.setText(Integer.toString(input1+input2)),但如果我不输入任何内容,程序会停止以添加额外的信息位:在从
EditText
获取文本的行上,您会自动尝试并解析它们。您应该首先检查null
值,并且只有当输入不是null
时,您才能从中解析整数。更正:NumberFormatException存在我无法理解。但是我不能。。Hehehet添加一个额外的信息位:在从EditText
获取文本的行上,您会自动尝试并解析它们。您应该首先检查null
值,并且只有当输入不是null
时,您才能从中解析整数。更正:NumberFormatException存在我无法理解。但是我不能。。HeHeHe最好捕捉数字格式异常。这将处理所有解析错误,而不仅仅是空字符串和两个输入字段的一段代码。这就是异常处理的目的。最好捕获NumberFormatException。这将处理所有解析错误,而不仅仅是空字符串和两个输入字段的一段代码。这是针对的异常处理。错误-类型字符串的方法isEmpty()未定义@KrauxeMy bad,isEmpty()
是在API级别9中添加的,因此在较低的API级别上使用它将产生错误。您可以改为使用input1.getText().toString().equals(“”
)。请参阅更新的答案。错误。hehe类型不匹配:无法从布尔值转换为int@KrauxeYou代码中有输入错误。我发布的代码是正确的,这是三元运算符/表达式的用法。您可能提前终止了它,因此指定了布尔
部分,而不是2个可能的int
值。错误-未为类型字符串定义方法isEmpty()@KrauxeMy bad,isEmpty()
是在API级别9中添加的,因此在较低的API级别上使用它将产生错误。您可以改为使用input1.getText().toString().equals(“”
)。请参阅更新的答案。错误。hehe类型不匹配:无法从布尔值转换为int@KrauxeYou代码中有输入错误。我发布的代码是正确的,这是三元运算符/表达式的用法。您可能提前终止了它,因此分配了布尔
部分,而不是2个可能的int
值。