解决方案 Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods
首先是代码:
这部分工作正常:(pr(String s) <==> System.out.println(s)
)
pr("Stage:");
String stage = sc.next();
Stage st;
try{
st = Stage.valueOf(stage);
}
catch(IllegalArgumentException e){
inv();//Println "Invalid Input!"
break;
}
结束然后:
pr("End:");
String en = sc.nextLine();
LocalDateTime end;
try
{
int d = Integer.parseInt(en.substring(0,2));
int m = Integer.parseInt(en.substring(3, 5));
int h = Integer.parseInt(en.substring(7, 9));
int min = Integer.parseInt(en.substring(10));
end = LocalDateTime.of(year, m, d, h, min);
}
catch ( NumberFormatException f)
{
inv();//Prints Invalid Input!
break;
}
我得到了
java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.substring(Unknown Source)
调试扫描仪时总是跳过&#34;结束&#34;输入
修改 恩是&#34;&#34;但输入似乎是一个无限循环 (例如:12.11.13:14 \ n \ n \ n ......) 因此我无法在en
中保存输入 EDIT2 输入始终为&#34; MM.dd。 HH:MM&#34;否则打印"Invalid Input"
如何摆脱这个问题?它是由println引起的吗?
答案 0 :(得分:0)
问题是:nextInt()忽略“\ n”字符,因此nextline()读取“\ n”行的其余部分。
详细信息:Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods