zoukankan      html  css  js  c++  java
  • 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));
            }
        }

  • 相关阅读:
    AppCrawler自动化遍历使用详解(版本2.1.0 )
    python 接口测试1 --如何创建和打印日志文件
    通过Xshell登录远程服务器实时查看log日志
    java基础知识6-- 抽象类,抽象方法,接口,构造方法,类方法等易混淆的知识点
    java基础知识5--集合类(Set,List,Map)和迭代器Iterator的使用
    java基础知识4--数组的常用方法(Array)
    java基础知识3--如何获取资源文件(Java中获取资源文件的url)
    java基础知识2--String,StringBufffer,StringBuilder的区别
    java基础知识1--String常用方法总结
    javascript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)
  • 原文地址:https://www.cnblogs.com/shan-kylin/p/9450354.html
Copyright © 2011-2022 走看看