java - 当 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));
解决方案
这就是为什么你应该避免做很多内联代码的原因。
没有空整数之类的东西,您需要从编辑文本中检查字符串
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
}
}
推荐阅读
- r - 在 linux 环境中从命令行调用 RStudio 的命令是什么?
- java - 使用 Java 8 并行流以原子方式更新从 Map 检索的元素
- python - 将浮点值列表的小数精度格式化为以逗号作为小数分隔符的元组序列
- javascript - jQuery委派的.off()不起作用
- angular - Angular 5 的子路由无法正常工作
- unit-testing - 如何区分单元测试和集成测试?
- html - 怎么混与段落?
- php - angular http get 从 php 文件返回空的 json 数据
- exist-db - 存在-db如何访问pdf
- vba - Excel VBA 保护返回错误