Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果没有';不要输入任何东西_Android_Button_Android Edittext - Fatal编程技术网

Android 如果没有';不要输入任何东西

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

我是新来的。我有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;
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
值。