欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA人机交互Scanner的使用

程序员文章站 2022-03-04 21:10:46
...

Java Scanner 类

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入,我喜欢叫它扫描仪。

下面是创建 Scanner 对象的基本语法:

Scanner scanner = new Scanner(System.in);

//基本使用块
//·········

//一般使用I/O流类,一定要记得结束对它的使用
scanner.close();

基本的使用
next()方法:

 /**
         * next()方法:
         * 一定要接受有效字符
         * 对空白之前的字符会自动将其去掉
         * 以空白或Enter为结束
         */

        //创建一个扫描对象,用于接收键盘数据
        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();

测试结果:
JAVA人机交互Scanner的使用
显然输入和输出不一样,next()方法中是以空格和Enter为结束符,在空格以后的他都不会再接收存在str中。

nextLine()方法:

        /**
         * nextLine()方法:
         * 以Enter为结束符
         * 可以接收空白
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方法接收:");
        if (scanner.hasNext()){
            String str = scanner.nextLine();
            System.out.println("输出的内容:"+str);
        }
        scanner.close();

测试结果:
JAVA人机交互Scanner的使用
使用nextLine()可以接收一整行的字符串,以Enter接收,等于就是相当于可以接收一整行的数据。

next()和nextLine()返回的都是String类型

下面为接收其他类型的类型的方法:
boolean nextBoolean()
byte nextByte()
double nextDouble()
float nextFloat()
int nextInt()
long nextLong(int radix)
short nextShort()

以nextFloat()和nextInt()为例子:

Scanner scanner = new Scanner(System.in);

        int i = 0;
        float f = 0.0f;

        System.out.println("请输入整数:");
        if (scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("整数数据:"+i);
        } else{
            System.out.println("输入的不是整数数据!");
        }

        System.out.println("请输入小数:");
        if (scanner.hasNextFloat()){
            f = scanner.nextFloat();
            System.out.println("小数数据:"+f);
        } else{
            System.out.println("输入的不是小数数据!");
        }

        scanner.close();

测试结果:
JAVA人机交互Scanner的使用
上诉测试是在第一次输入的不是整数的情况下,代码中的第一个if不通过,但是第二个if可以通过,两次扫描第一个扫描不接收,但是第二个扫描可以接收。