• java的Scanner类总结


    java中的从键盘输入主要是依赖于Scanner类,下面将介绍Scanner类的一些比较常见并且重要的方法。

    1.nextInt()/nextFloat()/nextDouble().....

      这种只会读取一个数值,并且不会读取最后的换行符' '

    2.String nextLine()

      扫描的是一行数据,并且当作字符串来处理,不会读取最后的换行符' '

    3.String next()

      遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。

    测试:

     public static void main(String []args){
            Scanner scanner=new Scanner(System.in); //从键盘获取标准输入
            System.out.println("请输入你的座右铭:");
            String pro=scanner.nextLine();
            System.out.println("请输入你的名字");
            String name=scanner.next();
            System.out.println("请输入你的年纪");
            int age=scanner.nextInt();
            
            System.out.println("座右铭:"+pro);
            System.out.println("名字:"+name);
            System.out.println("年纪:"+age);
        }

    存在BUG的地方:

       实验发现,如果在nextLine(),之前有其他的输入的话(不包含nextLine(),也就是说2个nextLine()不会出现这个问题),nextLine()会无法输入,原因是:nextLine()会读取之前输入的回车' ',也就是说是读取了,但是读取了上一个输入的回车,所以解决方法就是:加多一个nextLine()来读取上一次的回车即可;有点类似c++的getchar()来读取上一个的回车。

     public static void main(String []args){
            Scanner scanner=new Scanner(System.in); //从键盘获取标准输入
            System.out.println("请输入你的名字");
            String name=scanner.next();
            System.out.println("请输入你的座右铭:");
            String pro=scanner.nextLine();
            System.out.println("请输入你的年纪");
            int age=scanner.nextInt();
    
            System.out.println("座右铭:"+pro);
            System.out.println("名字:"+name);
            System.out.println("年纪:"+age);
        }

     从结果中可以看到,我们无法输入座右铭,因为它已经读取了上一个的回车,相当于输入完成了。

    解决方法:加多一个nextLine()

     public static void main(String []args){
            Scanner scanner=new Scanner(System.in); //从键盘获取标准输入
            System.out.println("请输入你的名字");
            String name=scanner.next();
            scanner.nextLine();
            System.out.println("请输入你的座右铭:");
            String pro=scanner.nextLine();
            System.out.println("请输入你的年纪");
            int age=scanner.nextInt();
    
            System.out.println("座右铭:"+pro);
            System.out.println("名字:"+name);
            System.out.println("年纪:"+age);
        }

    循环输入多组测试用例

      public static void main(String []args) {
    
            Scanner input = new Scanner(System.in);
            while (input.hasNext()) {
                int n = input.nextInt();
                int[] a = new int[n];
                for (int i = 0; i < n; i++) {
                    a[i] = input.nextInt();
                }
                String[] b = new String[n];
                for (int i = 0; i < n; i++) {
                    b[i] = input.next();
                }
                System.out.println(Arrays.toString(a) + "  " + Arrays.toString(b));
            }
        }

  • 相关阅读:
    linux默认的2.7升级到3.7版本
    linux 延时执行——at命令的几种用法
    unittest===unittest 的几种执行方式
    第一本docker书 学习笔记(二)
    第一本docker书 学习笔记(一)
    selenium===使用docker搭建selenium分布式测试环境
    https://www.yunpanjingling.com/
    AndroidManifest.xml权限设置
    XSS注入常用语句
    移动APP安全测试
  • 原文地址:https://www.cnblogs.com/shan-kylin/p/9450354.html
Copyright © 2020-2023  润新知