Scanner工具类的介绍及简单使用

558 阅读2分钟

什么是Scanner

基本认识

  • Scanner是一个Java内置的工具类,可以实现一些简单的机器和人的交互,我们可以通过Scanner类来获取用户的输入。

  • 基本语法

    	// 创建Scanner对象,用于接收键盘输入的数据
    	Scanner scanner = new Scanner(System.in);
    
  • 通过Scanner类的 next() 和 nextLine() 方法获取输入的字符串,在读取前我们一般需要通过 hasNext() 与 hasNextLine() 来判断是否还有输入的数据

简单的代码示范

package com.molu.test;

import java.util.Scanner;

public class Demo {
    
    public static void main(String[] args) {
        
        // 创建Scanner对象,用于接收键盘输入的数据
        Scanner scanner = new Scanner(System.in);
        
        // 写一行提示
        System.out.println("使用next方法接收用户的输入:");
        
        // 判断用户有没有输入字符串(可以去掉)
        if (scanner.hasNext()){
            
            // 使用next()方法获取用户输入的字符串
            String str = scanner.next();
            
            // 将用户输入的字符串打印
            System.out.println("用户输入的是:" + str);
            
        }
        // 关闭Scanner,防止资源占用
        scanner.close();
    }

}

控制台交互测试

运行之后我们在控制台得到了一个简单交互界面,可以看到打印出了我们写的提示。我们也可以在提示下方尝试输入一个字符串。

输入Hello World后发现打印出的提示只有Hello 而没有World,且程序接收到我们的字符串后结束了运行。

这里不要惊慌,并不是程序哪里写错了;我们来看一下hasNext的一些规范

hasNext() :

  • 一定要读取到有效字符才会结束运行。
  • 在输入有效字符前遇到的空白,hasNext会将其自动去除。
  • 输入有效字符后会将遇到的空白作为分隔符或结束符。

所以我们输入 "Hello World" 只能得到 "Hello" 是正常的情况。(因为有空格)

我们可以通过修改Next为NextLine,来避免这种问题。

修改完成后再次在控制台进行测试,得到了完整的Hello World (nextLine以回车为结束符,可以接收到我们输入的全部字符串)。

使用Scanner实现简单的数学操作

代码如下:(代码很简单,都是一些基础就不多赘述,注释也就懒得写了)

package com.molu.test;

import java.util.Scanner;

public class Demo2 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double sum = 0;
        int m = 0;
        while (scanner.hasNextDouble()){

            double x = scanner.nextDouble();
            m++;
            sum += x;
            System.out.println("你输入了第" + m + "个参数,当前的和为" + sum);
        }

        System.out.println("运行结束平均数为:" + (sum/m));
        scanner.close();
    }
}

运行后我们可以输入多个参数来求和,运行结束(输入非double类型的参数就可以退出)后会求出平均值(会存在精度问题)。

本来还挺纠结的这么简单的东西有没有写博客的必要,想了想也许或多或少能帮到一些新人还是写了。(水博客真塔玛开心~~~)


原图p站地址 :

点击跳转 (需要挂梯子 ~)

画师id : KUROBEKO