好的我正在尝试创建一个简单的计算器应用程序,但是当没有任何输入我尝试了条件但它没有工作时崩溃了。 所以如果有人能帮助我那会很好。 非常感谢!!
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));
}
}
}
答案 0 :(得分:2)
疯狂猜测。如果(a,b,c)可以是空字符串,那么parseDouble可能会抛出NumberFormatException。尝试将解析代码移动到else块。
答案 1 :(得分:-1)
此问题是因为用户未在e1
,e2
和e3
中输入任何数字。
当编译器转到行String a = e1.getText().toString();
时,他在e1
中找不到任何要转换为String的文本!等等..
我通过这个功能来解决它
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;
}
}
}