zoukankan      html  css  js  c++  java
  • java Scanner类注意事项

    1,循环或递归调用获取数字时,不能用hasNextInt()判断是否有输入,不然会陷入死循环,应该用hasNext()。获取也不能用nextInt(),应用next(),否则也会死循环

    例如这段代码,用nextInt()就死循环。外面用hasNextInt()判断也死循环

    private static int getMethod() throws IOException{
            // 判断是否还有输入
            try {
                if (sc.hasNext()) {
                    /*String next = sc.next();
                    System.out.println("ttt:"+next);
                    if(next.equals("1")||next.equals("2")||next.equals("3")){
                        return Integer.valueOf(next);
                    }*/
                    if(sc.nextInt()==1){
                        return 1;
                    }
                }
                System.out.println("输入有误,只允许输入数字,请重新输入");
                return getMethod();
            } catch (Exception e) {
    
                System.out.println("输入有误,只允许输入数字,请重新输入");
                return getMethod();
            }
        }
    View Code

    2.这个类有时会出现一些bug,即便上正常的代码(注释部分),也会死循环,不过发生几率很小,还有的时候会发生不能输入的情况。我找了好多资料,也没有大佬介绍这一现象,希望有人能找出我的错误告诉我是我错了

    3.不知是eclipse还是java的bug,在中文模式下输入(焦点在其他打印日志上),然后切换到正常地方,输入不了,英文可以,如:

    第一次,把光标放到绿框中的任意位置,输入英文可以自动在下方显示,程序正常进行

    第二次,把光标放到红框中的任意位置,输入中文,则不能继续输入,程序无法正常进行

  • 相关阅读:
    基于Yarp的http内网穿透库HttpMouse
    Redis+Lua解决高并发场景抢购秒杀问题
    SQL慢查询排查思路
    webrtc之TURE、STUN、摄像头打开实战
    WebService就该这么学
    超详细 Java 15 新功能介绍
    Java 14 新功能介绍
    Java 17 将要发布,补一下 Java 13 中的新功能
    Java 8 Function 函数接口
    PO/DO/VO/DTO/BO/POJO概念与区别
  • 原文地址:https://www.cnblogs.com/yanan7890/p/9590190.html
Copyright © 2011-2022 走看看