8

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

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

4

4 回答 4

12

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

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

此外,您可以用 a 包围try/catch并捕获 numberFormatException 然后打印适当的消息

于 2013-05-24T01:36:25.600 回答
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。

于 2013-05-24T01:35:28.387 回答
1
   String text = editText.getText().toString(); 
   if(!text.equals("") && text.matches("^\\d+$")){
       cast to int
    }
于 2013-05-24T01:47:29.853 回答
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);
    }


}
于 2015-11-14T06:53:50.747 回答