我已经知道是什么导致了这个错误,我只是不知道如何处理用户没有在对话框中输入任何内容的情况,然后按下将字符串解析为int的按钮。它无法将空字符串解析为int,因此会抛出错误。我已经做了一些关于如何做到这一点的研究,但没有找到一个有效的结果。
问题:在尝试运行其余代码之前,如何检查对话框中是否包含文本。
答案 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);
}
}