Android中如何处理空EditText值?

Android中如何处理空EditText值?,android,null,crash,android-edittext,Android,Null,Crash,Android Edittext,我正在为android开发一个应用程序,目前它唯一能做的就是计算分数。有两个输入框,一个用于获取当前成绩,另一个用于获取可能的考试成绩,然后告诉您最终成绩。但是,当其中至少一个框中没有值时,它就会崩溃。我尝试使用if语句来检测最终值是否为null,但没有成功。这是我的密码: public void sendMessage(View view){ Intent intent = new Intent(this, DisplayMessageActivity.class); Edit

我正在为android开发一个应用程序,目前它唯一能做的就是计算分数。有两个输入框,一个用于获取当前成绩,另一个用于获取可能的考试成绩,然后告诉您最终成绩。但是,当其中至少一个框中没有值时,它就会崩溃。我尝试使用if语句来检测最终值是否为null,但没有成功。这是我的密码:

public void sendMessage(View view){
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText grade = (EditText) findViewById(R.id.grade1);
    EditText exam = (EditText) findViewById(R.id.grade2);
    String stringGrade = (grade.getText().toString());
    String stringExam = (exam.getText().toString());
    double finalResult = (Double.parseDouble(stringGrade) * .8) + (Double.parseDouble(stringExam) * 0.2);
    String finalResultString = String.valueOf(finalResult);
    if (finalResultString == null){
        finalResultString = "0";
    } else {
    intent.putExtra(EXTRA_MESSAGE, finalResultString);
    startActivity(intent);
}}
下面是呈现它的代码:

Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    TextView textView1 = new TextView(this);
    textView1.setTextSize(30);
    textView1.setText("Your final would be " + message);

    setContentView(textView1);
仅供参考,0.8和0.2是因为当前分数的权重为80%,而考试的权重为20%。我怎样才能使它在没有任何东西放入盒子时不会崩溃?

试试以下方法:

public void sendMessage(View view){
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText grade = (EditText) findViewById(R.id.grade1);
    EditText exam = (EditText) findViewById(R.id.grade2);
    String stringGrade = (grade.getText().toString());
    String stringExam = (exam.getText().toString());
    if(stringGrade.equals("") ){
       stringGrade = "0";
    }
    if(stringExam.equals("") ){
       stringExam= "0";
    }
    double finalResult = (Double.parseDouble(stringGrade) * .8) + (Double.parseDouble(stringExam) * 0.2);
    String finalResultString = String.valueOf(finalResult);
    if (finalResultString == null){
        finalResultString = "0";
    } else {
    intent.putExtra(EXTRA_MESSAGE, finalResultString);
    startActivity(intent);
}}

usernameEditText.getText().toString()不会返回null。它将返回一个空字符串。在计算
finalResult
之前,您可以做的是检查stringGrade和stingExam是否为非空值和数值,如果不是,则停止操作。i、 e

String stringGrade = (grade.getText().toString());
String stringExam = (exam.getText().toString());

if (stringGrade.isEmpty() || stringExam.isEmpty()) {
    Toast.makeText(this, "Invalid values", Toast.LENGTH_SHORT);
    return;
}

在计算最终结果之前,测试stringGrade和stringExam是否不等于“”,非常感谢!这解决了问题。为了将来的参考,你必须使用!stringExam.equals(“”)而不是stringExam!=“”。如果您已解决此问题,请接受一个答案或添加您的解决方案作为答案,以供将来参考。如果您尚未解决此问题。还将此属性添加到EditText android:inputType=“number”