java.lang.NumberFormatException:无效INT:“”在android系统

2019-05-12 08:07发布

我已经知道是什么原因造成这个错误,我只是不知道如何处理的情况下,当用户没有输入任何内容到对话框,然后点击其中解析字符串转换成一个int的按钮。 它不能解析一个空字符串转换为一个int,所以它抛出一个错误。 我做了关于如何做到这一点一些研究,但还没有找到一个满意的结果的作品。

问题:你如何检查,看看是否该对话框中有文本,它试图运行代码的其余部分之前。

Answer 1:

一些代码将有助于与语法,但基本上

 if ("".equals(text)  // where text is the text that you get from an EditText or wherever you get it
 {    // give message to enter valid text;    }

此外,您还可以用包围try/catch和捕捉NumberFormatException异常然后打印相应的消息



Answer 2:

问题:你如何检查,看看是否该对话框中有文本,它试图运行代码的其余部分之前。

解决方案: if语句。

 int parseToInt(String maybeInt, int defaultValue){
     if (maybeInt == null) return defaultValue;
     maybeInt = maybeInt.trim();
     if (maybeInt.isEmpty()) return defaultValue;
     return Integer.parseInt(maybeInt);
 }

如果您能抽出多余的依赖,我想拉郎常见StringUtils的,而不是使用剪切/的isEmpty StringUtils.isBlank,因为那也处理Unicode。



Answer 3:

   String text = editText.getText().toString(); 
   if(!text.equals("") && text.matches("^\\d+$")){
       cast to int
    }


Answer 4:

同样的错误是导致我的应用程序崩溃。 答案是简单-把代码中

尝试{}

抓住()

这会导致异常,这样的代码块snip.This对我的作品。

public void setAge(String age) {

    final Calendar c = Calendar.getInstance();
    int yearCurrent = c.get(Calendar.YEAR);
    try {
        int yearPrev = (int) Integer.parseInt(age.substring(0, 4));//this line was causing the error
        int ageYear=yearCurrent-yearPrev;
        ageUser="Age : "+Integer.toString(ageYear);
    }
    catch(NumberFormatException numberEx) {
        System.out.print(numberEx);
    }


}


文章来源: java.lang.NumberFormatException: Invalid int: “” in android