java吧 关注:1,255,629贴子:12,745,524
  • 21回复贴,共1

求助,请问为什么我下面的代码会死循环,而id1的输入就第一次

只看楼主收藏回复

while(true){
try{
id1=input.nextInt();
}catch(Exception e){
System.out.println("请输入整数型数字");
continue;
}
break;
}


IP属地:浙江1楼2017-03-02 13:30回复
    我比较好奇你写这段代码的想法是什么。


    IP属地:广西2楼2017-03-02 13:38
    收起回复
      break跳出循环的意思。执行了一次就跳出了循环。


      IP属地:山东来自Android客户端3楼2017-03-02 13:40
      收起回复
        查看源码发现这一句“// don't skip bad token"不要跳过坏的记号,也就是说,发生匹配格式错误的异常后,匹配的那个指针不往下走,所以下次还会发生异常,进入死循环
        public int nextInt(int radix) {
        // Check cached result
        if ((typeCache != null) && (typeCache instanceof Integer)
        && this.radix == radix) {
        int val = ((Integer)typeCache).intValue();
        useTypeCache();
        return val;
        }
        setRadix(radix);
        clearCaches();
        // Search for next int
        try {
        String s = next(integerPattern());
        if (matcher.group(SIMPLE_GROUP_INDEX) == null)
        s = processIntegerToken(s);
        return Integer.parseInt(s, radix);
        } catch (NumberFormatException nfe) {
        position = matcher.start(); // don't skip bad token
        throw new InputMismatchException(nfe.getMessage());
        }
        }


        IP属地:河南4楼2017-03-02 14:06
        收起回复


          IP属地:山东来自Android客户端5楼2017-03-02 15:06
          收起回复