Java的Scanner 类

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入

创建 Scanner 对象的基本语法:

  • 第一步:导包
  • import java.util.Scanner;
  • 第二步:创建一个Scanner的对象(sc是对象名,可以改)
  • Scanner sc = new Scanner(System.in);
  • 第三步:录入数据
  • int x = sc.nextInt();

字符串输入

 通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串

  完整代码演示:

import java.util.Scanner;//导入包
public class Dome {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);// 从键盘接收数据
        String x = sc.next();// next方式接收字符串
        System.out.println(x);
    }
}

int,float,double,long的输入

int x = sc.nextInt();

float x = sc.nextFloat();
double x = sc.nextDouble();
long x = sc.nextLong();

next()方法

next()方法查找并返回来自此扫描器的下一个完整标记。切记,只读取输入直到空格。

具体示例如下:

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = scanner.next();
        System.out.println("您输入的字符串为:" + str);
    }

打印如下:

请输入一个字符串
bug
您输入的字符串为:bug

请输入一个字符串
adad dada dsada2
您输入的字符串为:adad

       总而言之,示例2你们是看到了其空格所带来的问题,它不能读取由两个空格隔开的字符,next方法只读取空格之前的数据,并且光标指向本行。

nextLine()方法

       上方讲解完了next方法,接着就我就给大家讲一下其nextLine()方法,其方法是返回输入源中下一行的所有内容。

具体示例如下:

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = scanner.nextLine();
        System.out.println("您输入的字符串为:" + str);
    }

打印如下:

请输入一个字符串
abcd 123 hhhh
您输入的字符串为:abcd 123 hhhh

       很明显, 对于next方法而言,nextLine方法是能完整读取到改行的所有内容,包括空格等,它是直接读到行尾才结束,然后回车,光标是直接定位到下一行。

next() 与 nextLine() 区别

next():

  • 1、一定要读取到有效字符后才可以结束输入。
  • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  • 2、可以获得空白。

实例

       给你们模拟一个场景,如何如何监听用户输入为日期格式的有效数据?对于这么个小的单元测试,我觉得你们大家肯定都能轻松写上来,唯独可能就是需要校验日期格式,因为如何匹配,给大家个参考,可以使用这个方法,hasNext(String pattern),其中pattern参数支持传入一个正则表达式,其中对于yyyy-MM-dd的日期格式正则写法为:[ ^\\d{4}-\\d{2}-\\d{2}$ ]

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个日期格式为:yyyy-MM-dd的字符串:");

        //判读输入格式是否为指定的日期格式
        if (scanner.hasNext("^\\d{4}-\\d{2}-\\d{2}$")) {
            System.out.println("输入的日期为:"+scanner.next());
        }else {
            System.out.println("输入的日期格式错误!");
        }
    }

接下来我们来测试验证一下:

请输入一个日期格式为:yyyy-MM-dd的字符串:
1
输入的日期格式错误!

请输入一个日期格式为:yyyy-MM-dd的字符串:
2022-06-29
输入的日期为:2022-06-29

你可能感兴趣的:(学习笔记,java,开发语言)