首页 > 解决方案 > 当 EditText 为空时防止 nullPointerException

问题描述

嗨,我正在制作一个应用程序来计算来自 EditTexts 的用户输入的平均值。当我运行应用程序时,它可以工作,但是当我将字段留空时,它会引发 nullPointerException。我知道它是什么以及我一般如何修复它们。使用我的代码,我正在考虑使用 if 语句来检查它是否为空。但我不知道如何用整数检查空/空值。有人可以解释检查这个的最佳方法/做法是什么吗?

欢迎任何提示等!

我的代码:

final Button calculateButton = findViewById(R.id.calculateAverageButton);
calaculateButton.setOnClickListener(new  View.onClickListener() {
public void onClick(View v) { TextView averageView = findViewById(R.id.averageView);

int grade[] = {Integer.parseInt(((EditText) findViewById(R.id.grade1)).getText().toString());
int weight[] = {Integer.parseInt(((EditText)  findViewById(R.id.weight1)).getText().toString());

int weightTotal = weight[0];

int sum = grade[0] * weight[0];

int average = sum / weightTotal

String averageText = getString(R.string.average);
averageView.setText(averageText + Integer.toString(average));

标签: javaandroidnullpointerexceptionandroid-edittext

解决方案


这就是为什么你应该避免做很多内联代码的原因。

没有空整数之类的东西,您需要从编辑文本中检查字符串

String value = ((EditText) findViewById(R.id.grade1)).getText().toString();
if(value != null && value.length() > 0){
    try{
        //Since edit text gives you a string you cannot guarantee you have a number input
        int numberValue = Integer.parseInt(value);
    catch(NumberFormatException e){
        //handle exception
    }
}

推荐阅读