我已经知道是什么导致了这个错误,我只是不知道如何处理用户没有在对话框中输入任何内容的情况,然后点击将字符串解析为 int 的按钮。它无法将空字符串解析为 int,因此会引发错误。我已经对如何做到这一点进行了一些研究,但还没有找到令人满意的结果。
问题:在尝试运行其余代码之前,如何检查对话框中是否包含文本。
我已经知道是什么导致了这个错误,我只是不知道如何处理用户没有在对话框中输入任何内容的情况,然后点击将字符串解析为 int 的按钮。它无法将空字符串解析为 int,因此会引发错误。我已经对如何做到这一点进行了一些研究,但还没有找到令人满意的结果。
问题:在尝试运行其余代码之前,如何检查对话框中是否包含文本。
一些代码将有助于语法,但基本上
 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 然后打印适当的消息
问题:在尝试运行其余代码之前,如何检查对话框中是否包含文本。
解决方案: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。
   String text = editText.getText().toString(); 
   if(!text.equals("") && text.matches("^\\d+$")){
       cast to int
    }
同样的错误导致我的应用程序崩溃。 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);
    }
}