我已经知道是什么导致了这个错误,我只是不知道如何处理用户没有在对话框中输入任何内容的情况,然后点击将字符串解析为 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);
}
}