• Scanner类用法(学习笔记)


    Scanner类用法

    1.next()用法

    package com.yushifu.scanner;
    import java.util.Scanner;//util java工具包
    //Scanner类(获取用户的输入)  Scanner s = new Scanner(System.in);
    //通过Scanner类的next()与nextLine()方法获取输入的字符串
    //在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据
    public class Demo01 {
        public static void main(String[] args) {
            //创建一个扫描器对象,用于接收键盘数据
            Scanner scanner = new Scanner(System.in);
            
            System.out.println("使用next()方法接收:");
            
            //判断用户有没有输入字符串
            if(scanner.hasNext()){//如果用户还有输入的话则执行
            
                String str = scanner.next();//使用next()方式接收
                System.out.println("输入的内容为:"+str);
            }
            
            //注意!凡是属于IO流的类如果不关闭会一直占用资源,要养成习惯,用完就关掉
            scanner.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述

    2.nextLine()用法

    package com.yushifu.scanner;
    
    import java.util.Scanner;
    
    public class Demo02 {
        public static void main(String[] args) {
            //从键盘接收数据
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("使用nextLine方式接收:");
            if (scanner.hasNext()){
                String str = scanner.nextLine();
                
                System.out.println("输出的内容为"+str);
            }
            scanner.close();
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    3.next()与nextLine用法的区别

    • (1)next()一定要读到用户输入有效字符后才会结束。
    • (2)next()会将输入有效字符之前遇到的空白去掉。
      在这里插入图片描述
    • (3)next()只有输入有效字符后才将其后面输入的空白作为结束符,即空白后不会输出。
    • (4)next()不能得到带有空格的字符串
      在这里插入图片描述
    • (5)nextLine()则以回车键(Enter)作为结束符,即nextLine()方法会接收回车之前键盘输入的所有字符。
      在这里插入图片描述
      所以在平时使用中,nextLine()方法是使用的比较多的。

    4.hasNext()

    package com.yushifu.scanner;
    
    import java.util.Scanner;
    
    public class Demo03 {
        public static void main(String[] args) {
            //使用scanner从键盘接收数据
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请您输入数字:");
            
            //使用hasNexT判断输入数据的类型
            if(scanner.hasNextInt()){//如果输入的是整数的话则执行语句体
                int m = scanner.nextInt();
                System.out.println("您输入的整数为:"+m);
    
            }else if(scanner.hasNextFloat()||scanner.hasNextDouble()){//如果是float或者double,则执行语句体
                System.out.println("您输入的数字类型为浮点数");
            }else{
                System.out.println("您输入的数据类型不是int、float、double类型。");
            }
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    运行结果如下图所示:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    当然hasNext()还有很多如下图所示其他的方法,有兴趣的读者朋友可以自行尝试。
    在这里插入图片描述


    Practice1键盘输入数据,存放进数组,要求数组长度为用户自定义输入所确定。

    public static int[] saveArrayData(){
            System.out.println("请输入数组长度:");
            Scanner scanner = new Scanner(System.in);
            //确定数组长度
            int length = scanner.nextInt();
            int[] nums = new int[length];
            //循环存放数据,存满结束
            for (int i = 0; i < length; i++) {
                System.out.println("请输入第"+(i+1)+"个数据:");
                nums[i]=scanner.nextInt();
            }
            System.out.println("输入的数组数据为:");
            for (int i = 0; i < length; i++) {
                if (i==0){
                    if(length==1){
                        System.out.println("["+nums[0]+"]");
                    }else {
                        System.out.print("["+nums[i]);
                    }
                }else if(i==length-1){
                    System.out.println(","+nums[i]+"]");
                }else {
                    System.out.print(","+nums[i]);
                }
            }
            return nums;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    运行效果:
    在这里插入图片描述

    Practice2:输入多个数字,求其总和与平均数(平均数要求保留两位小数),每输入一个数字使用回车确认,通过输入非数字类型来结束输入并输出计算结果。

    package com.yushifu.scanner;
    //Practice:输入多个数字,求其总和与平均数(平均数保留两位小数),
    //每输入一个数字使用回车确认,通过输入非数字类型来结束输入并输出计算结果。
    import java.util.Scanner;
    /**
     * @author yushifu
     */
    public class Demo04 {
        public static void main(String[] args) {
            //使用scanner接收键盘输入的数据
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入数据,输入非数字类型数据以结束.");
            //定义变量sum用于接收数字之和
            double sum = 0;
            //定义变量n计算输入数字的个数
            int n = 0;
            //定义变量mean用于接收输入数字的平均数
            double mean = 0;
            //通过循环判断是否还有输入,并且要对每一次输入进行求和
            //因为for循环多用于已知循环次数的情况下,所以我们使用while循环(未知循环次数时使用的较多)
            while (scanner.hasNextDouble()){
                double m = scanner.nextDouble();
                n++;//输入数字数量自增
                sum+=m;//输入数字累加和
                System.out.println("您输入了第"+n+"个数据,当前的和为"+sum);
            }
            mean = sum/n;
            //使用String format()方法设置double类型小数点后位数
            String formatDoubleMean = String.format("%.2f",mean);//这里博主后续会单独出一期java中double如何设置输出数据小数点位数的文章
            System.out.println("输入数字的个数为:"+n);
            System.out.println("输入数字的和为:"+sum);
            System.out.println("输入数字的平均数为:"+formatDoubleMean);//输出设置过小数点位数的平均数
            //养成使用IO流之后随手关闭的习惯
            scanner.close();
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    运行效果:
    在这里插入图片描述
    仅供学习使用!

  • 相关阅读:
    【xshell7】设置语法高亮(突出显示集)方式
    【Maven】属性scope依赖作用范围详解
    前端开发重装系统,软件安装清单
    携职教育:一个暑假的时间,就能拿下这本证书啦
    SLAM的本质就是六个字
    倍市得受邀做客普华永道“技术驱动企业创新与增长”系列沙龙——用户体验管理专场
    升级打怪课堂的题库更新了!
    Linux Mint(Ubuntu)上 安装 效率神器 utools
    AntScheduler
    基于python的对比度增强(线性变换、直方图正规化、直方图均衡化、CLAHE)
  • 原文地址:https://blog.csdn.net/weixin_48935611/article/details/132922663