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));
            }
        }

  • 相关阅读:
    NanUI for Winform发布,让Winform界面设计拥有无限可能
    新浪微博.Net SDK第三版源代码和示例【最后一次更新了】
    写个C#命令行参数解析的小工具
    Mac安装Windows 10的简明教程
    自己动手,让Entity Framework Power Tools在VS2015重放光彩
    C++CLI使用.net委托,*Callback注意"this"
    【转】IIS上的反向代理
    asp.net mvc 验证码
    win2008R2 下解决关于mysql odbc无法正常工作问题
    中国健康医学教育网
  • 原文地址:https://www.cnblogs.com/shan-kylin/p/9450354.html
Copyright © 2011-2022 走看看