我已经知道是什么原因造成这个错误,我只是不知道如何处理的情况下,当用户没有输入任何内容到对话框,然后点击其中解析字符串转换成一个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; }
此外,您还可以用包围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);
}
如果您能抽出多余的依赖,我想拉郎常见StringUtils的,而不是使用剪切/的isEmpty StringUtils.isBlank,因为那也处理Unicode。
String text = editText.getText().toString();
if(!text.equals("") && text.matches("^\\d+$")){
cast to int
}
同样的错误是导致我的应用程序崩溃。 答案是简单-把代码中
尝试{}
和
抓住()
这会导致异常,这样的代码块snip.This对我的作品。
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);
}
}