Java Scanner 类

本文详细介绍了Java中Scanner类的使用,包括next()与nextLine()方法处理字符串的区别,以及nextInt()和nextFloat()用于接收数字的场景。通过实例演示了如何正确判断输入类型并处理空格和换行符的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

        Scanner scanner = new Scanner(System.in);

一、next() 与 nextLine() 接收字符串

我们可以通过 Scanner 类的 next()nextLine() 方法获取输入的字符串 。

我们先使用 next() 方法,代码如下所示:

        //next方式接收用户输入的字符串
        String str = scanner.next();
        System.out.println("输入的数据为:"+str);

        //凡是属于IO流的类,如果不关闭会一直占用资源,因此一定要关掉
        scanner.close();

此时我们输入 hello world,最终结果如下所示:

在这里插入图片描述

我们可以看到,计算机只接收到了 hello 的部分,world则被忽略掉了,这是什么原因呢?

接下来我们看看 nextLine() ,代码如下:

        //nextLine方式接收用户输入的字符串
        String str2 = scanner.nextLine();
        System.out.println("输入的内容为:"+str2);

        scanner.close();

同样的,我们输入 hello world,最终结果如下所示:

在这里插入图片描述

可以看到 world 字符串成功输出。

根据上面的例子,我们可以看出:

  • 如果输入的有效字符后面带有空格,next()将空格作为结束符。因此,如果输入的字符串中间部分有空格,则使用next方法是无法得到完整的字符串的。
  • nextLine()以Enter为结束符,也就是说 ,nextLine()方法返回的是输入回车之前的所有字符。

此处我们再提一下,在接收字符串之前,我们一般需要使用 hasNexthasNextLine 判断是否还有输入的数据,代码如下:

        // hasNext判断是否还有输入
        if (scan.hasNext()) {
            String str1 = scan.next();
        }

        // hasNextLine判断是否还有输入
        if (scan.hasNextLine()) {
            String str2 = scan.nextLine();
        }

二、nextInt () 与 nextFloat () 接收数字

如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持。在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取。

完整代码如下所示:

        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("=======================");

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

        scanner.close();

我们输入符合要求的数据,结果如下所示:

在这里插入图片描述

我们输入错误的数据,结果如下所示:

在这里插入图片描述

其他实例:

如下所示,输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入,并输出执行结果。

        Scanner scanner = new Scanner(System.in);

        double sum = 0;
        int m =0;

        while (scanner.hasNextDouble()) {
            double x = scanner.nextDouble();
            m = m + 1;
            sum = sum + x;
        }

        System.out.println(m + "个数的和为" + sum);
        System.out.println(m + "个数的平均值是" + (sum / m));
        scanner.close();

结果如图所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值