为什么我得到一个 Integer.parseInt(String) 一个数字格式异常?
Why do i get for an Integer.parseInt(String) an numberformatexception?
我觉得解决方案非常简单,但我现在盯着它看了 10 分钟,但在我的代码中找不到任何错误。说真的。
而 eventDateStart
是一个整数。整数通常需要 8 个字符来进行字符串到 int
的转换,我不明白为什么 Java 不能转换它我就像......呃??
代码正在生成 NumberFormatException:
String rruleMonthday = "-1";
//where ar rrule is sth like --> RRULE:FREQ=MONTHLY;BYMONTHDAY=29
int firstMonthday = (rrule.indexOf("BYMONTHDAY=") + 11);
try {
rruleMonthday = rrule.substring(firstMonthday, rrule.indexOf(";", firstMonthday));
} catch (Exception ex) {
rruleMonthday = rrule.substring(firstMonthday, rrule.indexOf("\n", firstMonthday));
}
eventDateStart = eventDateStart.substring(0, 6) + rruleMonthday;
System.out.println("eventDateStart: ." + eventDateStart + ".");
System.out.println("2: " + Integer.parseInt(eventDateStart)); //this Integer.parseInt conversion is printing numberformatexception
输出:
eventDateStart: .20200329.
java.lang.NumberFormatException: For input string: "20200329"
根据 ASCII table 序列 50,48,50,48,48,51,50,57
是 20200329
值。在你的情况下,它后面跟着一个回车 return 符号 13
.
很可能您使用的是 Windows,其中行结束序列是 \r\n
。而不是 \n
使用 System.lineSeparator()
使您的代码平台独立:
} catch (Exception ex) {
rruleMonthday = rrule.substring(firstMonthday,
rrule.indexOf(System.lineSeparator(), firstMonthday));
}
我觉得解决方案非常简单,但我现在盯着它看了 10 分钟,但在我的代码中找不到任何错误。说真的。
而 eventDateStart
是一个整数。整数通常需要 8 个字符来进行字符串到 int
的转换,我不明白为什么 Java 不能转换它我就像......呃??
代码正在生成 NumberFormatException:
String rruleMonthday = "-1";
//where ar rrule is sth like --> RRULE:FREQ=MONTHLY;BYMONTHDAY=29
int firstMonthday = (rrule.indexOf("BYMONTHDAY=") + 11);
try {
rruleMonthday = rrule.substring(firstMonthday, rrule.indexOf(";", firstMonthday));
} catch (Exception ex) {
rruleMonthday = rrule.substring(firstMonthday, rrule.indexOf("\n", firstMonthday));
}
eventDateStart = eventDateStart.substring(0, 6) + rruleMonthday;
System.out.println("eventDateStart: ." + eventDateStart + ".");
System.out.println("2: " + Integer.parseInt(eventDateStart)); //this Integer.parseInt conversion is printing numberformatexception
输出:
eventDateStart: .20200329.
java.lang.NumberFormatException: For input string: "20200329"
根据 ASCII table 序列 50,48,50,48,48,51,50,57
是 20200329
值。在你的情况下,它后面跟着一个回车 return 符号 13
.
很可能您使用的是 Windows,其中行结束序列是 \r\n
。而不是 \n
使用 System.lineSeparator()
使您的代码平台独立:
} catch (Exception ex) {
rruleMonthday = rrule.substring(firstMonthday,
rrule.indexOf(System.lineSeparator(), firstMonthday));
}