2014-12-07 85 views
0

我正在开发一款适用于android的应用程序,目前唯一的功能是计算成绩。有两个输入框,一个输入当前成绩,另一个输入可能的考试成绩,然后告诉你最后的成绩。但是,至少在其中一个框中没有任何价值时,它会崩溃。我试图做一个if语句来检测最终值是否为null,但是这并不起作用。这里是我的代码:如何处理Android中的null EditText值?

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和.2是因为当前等级在80%权重,而考试加权为20%。我怎样才能做到这一点,所以当没有东西放入盒子时它不会崩溃?

+0

测试* stringGrade *和* stringExam *不等于“”之前计算* finalResult * – Rami 2014-12-07 17:15:06

+0

非常感谢!这解决了问题。为了将来的参考,你必须使用!stringExam.equals(“”)而不是stringExam!=“”。 – Saamoz 2014-12-07 17:26:26

+0

如果您解决了问题,请接受一个答案或添加您的解决方案作为未来参考的答案。 – Rami 2014-12-07 17:32:44

回答

0

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

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

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

试试这个:

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); 
}}