java.lang.NumberFormatException:在android中无效的int:“”

时间:2013-05-24 01:33:44

标签: android numberformatexception

我已经知道是什么导致了这个错误,我只是不知道如何处理用户没有在对话框中输入任何内容的情况,然后按下将字符串解析为int的按钮。它无法将空字符串解析为int,因此会抛出错误。我已经做了一些关于如何做到这一点的研究,但没有找到一个有效的结果。

问题:在尝试运行其余代码之前,如何检查对话框中是否包含文本。

4 个答案:

答案 0 :(得分:11)

有些代码会对语法有帮助,但基本上是

 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然后打印相应的消息

答案 1 :(得分:1)

  

问题:在尝试运行其余代码之前,如何检查对话框中是否包含文本。

解决方案:if声明。

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

如果你可以省去额外的依赖,我会使用Common Lang StringUtils来使用StringUtils.isBlank而不是trim / isEmpty,因为它也可以处理Unicode。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

同样的错误导致我的应用程序崩溃。 Ans 很简单 - 将代码放在

  

尝试{   }

  

捕获()

导致异常的阻止,就像这段代码一样。这对我有用。

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


}