尝试将整数与空字段相加时计算器出错
Calculator-Error when try to sum an integer with an empty field
我制作了一个计算器,可以对来自用户的两个数字求和。num1 和 num2 是用来接收来自 user.Result 的数字的编辑文本,是一个在 [=14= 上显示结果的文本视图] 当输入是两个整数时正确求和,但如果其中一个为空,例如 (5+null) 或 (null+2) 应用程序给出错误并关闭 itself.Where 是我的错误?这是我尝试过的
public class MainActivity extends AppCompatActivity {
EditText num1;
EditText num2;
TextView result;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1=(EditText)findViewById(R.id.number1);
num2=(EditText)findViewById(R.id.number2);
result=(TextView) findViewById(R.id.result);
}
public void plus(View view) {
int a = Integer.parseInt(num1.getText().toString());
int b = Integer.parseInt(num2.getText().toString());
if(num1.getText().toString()==null)
{
a=0;
}
if(num2.getText().toString()==null)
{
b=0;
}
int sum2 = a + b;
result.setText(" " + sum2);
}
我认为在尝试将字符串解析为 int 之前,您需要检查 EditText 中是否包含数据。
您在代码中所做的事情是错误的,因为您在 EditText 中没有任何值的情况下调用了 getText() 方法,因此试图将值“null”解析为 int。尝试将非数值解析为 int 会引发异常,进而导致应用程序崩溃。
P.s.: 您可能会在 Android Studio 底部的 Logcat window 中看到抛出的异常。
希望我的回答对您有所帮助。
public void plus(View view) {
try{
int a = Integer.parseInt(num1.getText().toString());
int b = Integer.parseInt(num2.getText().toString());
}
catch(NumberFormatterException e){
if(num1.getText().toString()==null)
{
a=0;
}
if(num2.getText().toString()==null)
{
b=0;
}
}
int sum2 = a + b;
result.setText(" " + sum2);
}
试一试:
public class MainActivity extends AppCompatActivity {
EditText num1;
EditText num2;
TextView result;
Integer a=0,b=0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1=(EditText)findViewById(R.id.number1);
num2=(EditText)findViewById(R.id.number2);
result=(TextView) findViewById(R.id.result);
}
public void plus(View view) {
if(num1.getText().toString()!=null||num1.getText().toString().equal("")){
a = Integer.parseInt(num1.getText().toString());
}else {
a=0;
}
if(num2.getText().toString()!=null||num2.getText().toString()equal("")){
b = Integer.parseInt(num2.getText().toString());
}else {
b=0;
}
result.setText(String.valueOf(a+b) );
}
同时转到 XML 中的 Your EditText 并在 EditText ->number 中设置 InputType
它也会起作用
您可以先用 0 值初始化变量 a 和 b,然后检查 num1 和 num2 是否为空。参考以下代码:
public void plus(View view) {
int a = 0;
int b = 0;
if (num1 != null && num1.getText() != null && num1.getText().toString() != "") {
a = Integer.parseInt(num1.getText().toString());
}
if (num2 != null && num2.getText() != null && num2.getText().toString() != "") {
b = Integer.parseInt(num2.getText().toString());
}
int sum2 = a + b;
result.setText(" " + sum2);
}
每次将字符串解析为数字时都必须使用 try/catch。这将捕获任何解析错误,包括空字符串:
public void plus(View view) {
int a = 0;
int b = 0;
try {
a = Integer.parseInt(num1.getText().toString().trim());
} catch (NumberFormatException e) { }
try {
b = Integer.parseInt(num2.getText().toString().trim());
} catch (NumberFormatException e) { }
int sum2 = a + b;
result.setText("" + sum2);
}
public void onClick(View view) {
int n1 = 0, n2 = 0;
try {
n1 = Integer.parseInt(num1.getText().toString());
}
catch(NumberFormatException e) {
if (num1.getText().toString() == null) {
n1 = 0;
}
}
try {
n2 = Integer.parseInt(num2.getText().toString());
}
catch(NumberFormatException e) {
if (num2.getText().toString() == null) {
n2 = 0;
}
}
int sum = n1 + n2;
result.setText("Answer : " + String.valueOf(sum));
}
如果有任何空字段,这就是您处理异常的方法。希望对你有帮助。
我制作了一个计算器,可以对来自用户的两个数字求和。num1 和 num2 是用来接收来自 user.Result 的数字的编辑文本,是一个在 [=14= 上显示结果的文本视图] 当输入是两个整数时正确求和,但如果其中一个为空,例如 (5+null) 或 (null+2) 应用程序给出错误并关闭 itself.Where 是我的错误?这是我尝试过的
public class MainActivity extends AppCompatActivity {
EditText num1;
EditText num2;
TextView result;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1=(EditText)findViewById(R.id.number1);
num2=(EditText)findViewById(R.id.number2);
result=(TextView) findViewById(R.id.result);
}
public void plus(View view) {
int a = Integer.parseInt(num1.getText().toString());
int b = Integer.parseInt(num2.getText().toString());
if(num1.getText().toString()==null)
{
a=0;
}
if(num2.getText().toString()==null)
{
b=0;
}
int sum2 = a + b;
result.setText(" " + sum2);
}
我认为在尝试将字符串解析为 int 之前,您需要检查 EditText 中是否包含数据。
您在代码中所做的事情是错误的,因为您在 EditText 中没有任何值的情况下调用了 getText() 方法,因此试图将值“null”解析为 int。尝试将非数值解析为 int 会引发异常,进而导致应用程序崩溃。
P.s.: 您可能会在 Android Studio 底部的 Logcat window 中看到抛出的异常。
希望我的回答对您有所帮助。
public void plus(View view) {
try{
int a = Integer.parseInt(num1.getText().toString());
int b = Integer.parseInt(num2.getText().toString());
}
catch(NumberFormatterException e){
if(num1.getText().toString()==null)
{
a=0;
}
if(num2.getText().toString()==null)
{
b=0;
}
}
int sum2 = a + b;
result.setText(" " + sum2);
}
试一试:
public class MainActivity extends AppCompatActivity {
EditText num1;
EditText num2;
TextView result;
Integer a=0,b=0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1=(EditText)findViewById(R.id.number1);
num2=(EditText)findViewById(R.id.number2);
result=(TextView) findViewById(R.id.result);
}
public void plus(View view) {
if(num1.getText().toString()!=null||num1.getText().toString().equal("")){
a = Integer.parseInt(num1.getText().toString());
}else {
a=0;
}
if(num2.getText().toString()!=null||num2.getText().toString()equal("")){
b = Integer.parseInt(num2.getText().toString());
}else {
b=0;
}
result.setText(String.valueOf(a+b) );
}
同时转到 XML 中的 Your EditText 并在 EditText ->number 中设置 InputType 它也会起作用
您可以先用 0 值初始化变量 a 和 b,然后检查 num1 和 num2 是否为空。参考以下代码:
public void plus(View view) {
int a = 0;
int b = 0;
if (num1 != null && num1.getText() != null && num1.getText().toString() != "") {
a = Integer.parseInt(num1.getText().toString());
}
if (num2 != null && num2.getText() != null && num2.getText().toString() != "") {
b = Integer.parseInt(num2.getText().toString());
}
int sum2 = a + b;
result.setText(" " + sum2);
}
每次将字符串解析为数字时都必须使用 try/catch。这将捕获任何解析错误,包括空字符串:
public void plus(View view) {
int a = 0;
int b = 0;
try {
a = Integer.parseInt(num1.getText().toString().trim());
} catch (NumberFormatException e) { }
try {
b = Integer.parseInt(num2.getText().toString().trim());
} catch (NumberFormatException e) { }
int sum2 = a + b;
result.setText("" + sum2);
}
public void onClick(View view) {
int n1 = 0, n2 = 0;
try {
n1 = Integer.parseInt(num1.getText().toString());
}
catch(NumberFormatException e) {
if (num1.getText().toString() == null) {
n1 = 0;
}
}
try {
n2 = Integer.parseInt(num2.getText().toString());
}
catch(NumberFormatException e) {
if (num2.getText().toString() == null) {
n2 = 0;
}
}
int sum = n1 + n2;
result.setText("Answer : " + String.valueOf(sum));
}
如果有任何空字段,这就是您处理异常的方法。希望对你有帮助。