OutOfBoundException:System.out.println()

时间:2016-02-19 13:18:07

标签: java java.util.scanner

解决方案 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引起的吗?

1 个答案:

答案 0 :(得分:0)

问题是:nextInt()忽略“\ n”字符,因此nextline()读取“\ n”行的其余部分。

详细信息:Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods