如果未输入任何内容,应用程序会崩溃
App crashes if nothing entered
好的,我正在尝试创建简单的计算器应用程序,但是当没有输入任何内容时它崩溃了我尝试了条件但它没有用。
因此,如果有人可以帮助我,那就太好了。
非常感谢!!
P.S。对不起英语不好
public class Kalkulator extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kalkulator);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
public void onButtonClick(View v) {
EditText e1 = (EditText)findViewById(R.id.etFirstNumber);
EditText e2 = (EditText)findViewById(R.id.etSecondNumber);
EditText e3 = (EditText)findViewById(R.id.etThirdNumber);
TextView t1 = (TextView)findViewById(R.id.tvresult);
String a = e1.getText().toString();
String b = e2.getText().toString();
String c = e3.getText().toString();
String er = "Ukucaj neki broj";
double num1 = Double.parseDouble(a);
double num2 = Double.parseDouble(b);
double num3 = Double.parseDouble(c);
if ( a.equals("") || b.equals("") || c.equals("")) {
t1.setText(er);
} else {
double sum = (num1*4) + (num2*5) + (num3*5);
t1.setText(String.valueOf(sum));
}
}
}
这个问题是因为用户没有在e1
、e2
和e3
中输入任何数字。
当编译器转到第 String a = e1.getText().toString();
行时,他没有在 e1
中找到任何要转换为字符串的文本!等等..
我用这个函数解决了
private boolean isEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0) {
return false;
} else {
return true;
}
}
并测试编辑文本是否为空
你可以在你的代码中使用它设置这个函数并使用它
你的代码
package com.ftech.kalkulatorzamalumaturu;
import android.content.pm.ActivityInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class Kalkulator extends AppCompatActivity {
String a ,b ,c ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kalkulator);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
public void onButtonClick(View v) {
final EditText e1 = (EditText)findViewById(R.id.etFirstNumber);
final EditText e2 = (EditText)findViewById(R.id.etSecondNumber);
final EditText e3 = (EditText)findViewById(R.id.etThirdNumber);
final TextView t1 = (TextView)findViewById(R.id.tvresult);
if (isEmpty(e1 )==false){
a = e1.getText().toString();
}
if (isEmpty(e2 )==false){
b = e2.getText().toString();
}
if (isEmpty(e3 )==false){
c = e3.getText().toString();
}
String er = "Ukucaj neki broj";
double num1 = Double.parseDouble(a);
double num2 = Double.parseDouble(b);
double num3 = Double.parseDouble(c);
if ( a.equals("") || b.equals("") || c.equals("")) {
t1.setText(er);
} else {
double sum = (num1*4) + (num2*5) + (num3*5);
t1.setText(String.valueOf(sum));
}
}
private boolean isEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0) {
return false;
} else {
return true;
}
}
}
在这里胡乱猜测。如果 (a, b, c) 可以是一个空字符串,那么 parseDouble 可能会抛出 NumberFormatException。尝试将解析代码移动到 else 块。
好的,我正在尝试创建简单的计算器应用程序,但是当没有输入任何内容时它崩溃了我尝试了条件但它没有用。 因此,如果有人可以帮助我,那就太好了。 非常感谢!!
P.S。对不起英语不好
public class Kalkulator extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kalkulator);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
public void onButtonClick(View v) {
EditText e1 = (EditText)findViewById(R.id.etFirstNumber);
EditText e2 = (EditText)findViewById(R.id.etSecondNumber);
EditText e3 = (EditText)findViewById(R.id.etThirdNumber);
TextView t1 = (TextView)findViewById(R.id.tvresult);
String a = e1.getText().toString();
String b = e2.getText().toString();
String c = e3.getText().toString();
String er = "Ukucaj neki broj";
double num1 = Double.parseDouble(a);
double num2 = Double.parseDouble(b);
double num3 = Double.parseDouble(c);
if ( a.equals("") || b.equals("") || c.equals("")) {
t1.setText(er);
} else {
double sum = (num1*4) + (num2*5) + (num3*5);
t1.setText(String.valueOf(sum));
}
}
}
这个问题是因为用户没有在e1
、e2
和e3
中输入任何数字。
当编译器转到第 String a = e1.getText().toString();
行时,他没有在 e1
中找到任何要转换为字符串的文本!等等..
我用这个函数解决了
private boolean isEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0) {
return false;
} else {
return true;
}
}
并测试编辑文本是否为空
你可以在你的代码中使用它设置这个函数并使用它
你的代码
package com.ftech.kalkulatorzamalumaturu;
import android.content.pm.ActivityInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class Kalkulator extends AppCompatActivity {
String a ,b ,c ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kalkulator);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
public void onButtonClick(View v) {
final EditText e1 = (EditText)findViewById(R.id.etFirstNumber);
final EditText e2 = (EditText)findViewById(R.id.etSecondNumber);
final EditText e3 = (EditText)findViewById(R.id.etThirdNumber);
final TextView t1 = (TextView)findViewById(R.id.tvresult);
if (isEmpty(e1 )==false){
a = e1.getText().toString();
}
if (isEmpty(e2 )==false){
b = e2.getText().toString();
}
if (isEmpty(e3 )==false){
c = e3.getText().toString();
}
String er = "Ukucaj neki broj";
double num1 = Double.parseDouble(a);
double num2 = Double.parseDouble(b);
double num3 = Double.parseDouble(c);
if ( a.equals("") || b.equals("") || c.equals("")) {
t1.setText(er);
} else {
double sum = (num1*4) + (num2*5) + (num3*5);
t1.setText(String.valueOf(sum));
}
}
private boolean isEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0) {
return false;
} else {
return true;
}
}
}
在这里胡乱猜测。如果 (a, b, c) 可以是一个空字符串,那么 parseDouble 可能会抛出 NumberFormatException。尝试将解析代码移动到 else 块。