JAVA基础:Scanner类中next(),nextline(),hasnext(),hasnextline()浅析

本文详细解析了Java中next(), nextLine(), hasNext() 和 hasNextLine() 函数的功能与区别,并通过实例对比了它们在读取输入时的行为差异。

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

在JAVA的初阶段学习中,经常会把这几个函数搞混,或者对他们的用法模糊不清。

下面将对这四个函数进行理论和举例分析,以及少许用法。

先给理论:

        next():只读取输入直到空格。它不能读两个由空格或符号隔开的单词。此外,next()在读取输入后将光标放在同一行中。next()只读空格之前的数据,并且光标指向本行。

        nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即它读到行尾)。读取输入后,nextLine()将光标定位在下一行。

           hasNext():

            1、输出为布尔值。

            2、判断输入的缓存中是否有效字符,遇到空格结束。
            3、如果只输入空格,不会匹配,返回false。

          hasNextLine():

            1、以Enter为结束符,判断此行有没有输入,空白输入也会返回true。

 可能我们初步的想法是控制台会先打印    “请输入内容"

但控制台在程序开始运行的时候就让我们输入一些东西。输入后才显示 “请输入内容"

这是什么原因导致的呢?

首先明确一件事:hasNextLine()和nextLine()都可以让用户进行输入。

那我们的视线再回到程序上来,可以这样理解:

1.in.hasNextLine()先让用户输入一些东西,让后将这一行存储到缓冲区中。

2.因为现在缓冲区非空,所以nextline就没有让用户再进行一次输入。直接把这一行的内容赋给了字符串s

3.让后循环一直进行。

那如果程序变成这样子呢?

 我们输入12 25(中间有一个空格)

控制台输出的结果如下

这正是next()和nextline()函数的区别所在,next()读取缓冲区时遇到空格就会停止,而nextline()会读取一整行的内容.

而hasNext()和hasNextLine()函数的区别是不是也和上面类似呢?

控制台如下:

 另外一个程序

控制台:

通过实例可以进行猜测,hasNext()和hasNextLine()函数在将用户输入存入缓冲区的作用是相同的,都是将整行存入。

 总结:

        1.next()读取缓冲区时遇到空格就会停止,而nextline()会读取一整行的内容.

        2.hasNextLine()和nextLine()都可以让用户进行输入。同理如next和hasNext;

        3.hasNext()和hasNextLine()函数在将用户输入存入缓冲区的作用是相同的,都是将整行存入。

一个用法:

private static String readKeyBoard(int limit, boolean blankReturn) {
        String line = "";

        while (scanner.hasNextLine()) {
            line = scanner.nextLine();
            if (line.length() == 0) {
                if (blankReturn) return line;
                else continue;
            }

            if (line.length() < 1 || line.length() > limit) {
                System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                continue;
            }
            break;
        }

        return line;
    }

可以让用户一直输入,直到用户输入符合条件的字符串才退出循环。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值