繁体   English   中英

寻找一种处理 java.lang.NumberFormatException: empty String 的方法

[英]Looking for a way to handle java.lang.NumberFormatException: empty String

我是编程新手,并且正在学习中。

我的应用程序可以完成我需要做的所有事情,但是当我的文本字段为空并且点击计算按钮时,应用程序将关闭,我得到 java.lang.NumberFormatException: empty String。 在这一点上,我无法弄清楚如何避免这种情况。

/** Pull data from edittext **/
double ang = Double.parseDouble(AngleeditText.getText().toString());
double tnr = Double.parseDouble(TnreditText.getText().toString());

任何帮助是极大的赞赏。 提前致谢。

/** post to textView **/
XofftextView.setText(String.format("X Offset : %.4f", resultx));
ZofftextView.setText(String.format("Z Offset : %.4f", resultz));

确保在解析为所需格式之前已检查 null 或 empty。

解决方案

String text = AngleeditText.getText().toString();

if (text != null && text.length() > 0) {
    double ang = Double.parseDouble(text);
    // Use ang value
}

在处理输入之前,您应该对其进行完整性检查。

例如,做这样的事情没有错:

String x = AngleeditText.getText().toString();
String y = TnreditText.getText().toString();

if (x == null || x.equalsIgnoreCase("") || y == null || y.equalsIgnoreCase("")) {
    return;
}

作为一般规则,解析也应始终包含在 try/catch 控制结构中。 例如

double ang = 0.0;
double trn = 0.0;
try { 
    ang = Double.parseDouble(x);
    trn = Double.parseDouble(y);
} catch (Exception e) {
    //Optionally system.out or system.err some message here
    System.out.println("Couldn't parse" + x + " or " + y);
    return;
}

注意:如果你想在 try/catch 块之外使用它们,你必须声明(并初始化)ang 和 trn。

此外,甚至在尝试解析输入之前,您可能希望通过适当的正则表达式运行它以确保它实际上是一个合法的数字。

比格凯夫。 欢迎来到编程世界:)

我应该假设 resultx 和 resultz 来自 ang 和 tnr 吗? 如果是这样的话:

我相信调用 .ToString() 函数时,AngleeditText.getText() 不返回任何值。 由于没有引用,当您设置 resultx 和 resultz 时,会发生异常。

如果 resultx 和 resultxz 或 AngleeditText.getText() 和 TnreditText.getText() 返回的值不同于 null 和空,我建议您首先验证。

您可以为此创建一个方法并包含如下验证:

if(resultx != null && !resultx.isEmpty()) 
       XofftextView.setText(String.format("X Offset : %.4f", resultx));

我希望这是有帮助的。

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM