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

在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;
    }

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

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: `next()` 方法用于读取下一个单词,而 `nextLine()` 方法用于读取整行文本。在使用 `next()` 读取单词后,如果在单词后面还有其他字符(包括空格和换行符),这些字符将不会被读取。而在使用 `nextLine()` 方法读取文本后,整行文本都会被读取,包括空格和换行符。 ### 回答2: Java Scanner类是用于将输入的文本转换为Java程序中可以使用的字符数据或数字数据的常用类。它可以读取标准输入、文件、网络套接字等各种输入流。在使用Scanner类时,可以使用next()方法和nextLine()方法来读取输入流中的文本数据,这两种方法的区别如下: 1. next():读取输入流中的下一个标记(以空格为分隔符),返回一个字符串。例如,如果输入流中包含“Hello world”,则调用next()方法会返回“Hello”。 在使用next()方法时,要注意以下几点: (1) 如果输入流中没有下一个标记,那么next()方法会抛出NoSuchElementException异常; (2) next()方法只能读取一个标记,不能读取整行文本; (3) 如果输入流中存在换行符(\n),则next()方法会把换行符当作标记的一部分而返回。 2. nextLine():读取输入流中的下一行文本,返回一个字符串。例如,如果输入流中包含“Hello world\nChina”,则调用nextLine()方法会返回“Hello world”。 在使用nextLine()方法时,要注意以下几点: (1) nextLine()方法会读取整行文本,包括换行符; (2) 如果输入流中没有下一行文本,那么nextLine()方法会抛出NoSuchElementException异常; (3) nextLine()方法可以读取空行。 因此,在使用Scanner类时,根据需要选择合适的方法来读取输入流中的文本数据。如果需要读取整行文本,则使用nextLine()方法;如果需要读取单个标记,则使用next()方法。同时,需要注意的是,在使用Scanner类时,要根据输入流中的具体内容选择合适的分隔符,以防止读取错误。 ### 回答3: Java中的Scanner类是一个用于读取用户输入和文件输入的类。在Scanner类中,有两种不同方法来读取输入,分别是next()和nextLine()。 next()方法用于读取输入中的下一个单词(以空格为分隔符),并将其作为字符串返回。例如,如果用户输入“Hello World”,则next()方法只会返回“Hello”,因为空格后面的“World”会被忽略掉。 nextLine()方法用于读取输入中的整行文本,并将其作为字符串返回。例如,如果用户输入“Hello World”,则nextLine()方法会返回整个字符串“Hello World”。 需要注意的是,当用户使用Scanner类来读取输入时,Scanner会将输入缓存在内存中,直到达到指定的分隔符(默认情况下是空格或换行符)或读取整行(使用nextLine()方法)。因此,在读取输入之前必须清空Scanner的缓冲区,以免读取到不正确的数据。 通常情况下,如果你需要读取整行文本,应该使用nextLine()方法。但是,如果你只需要读取一个单词,或者需要读取一行文本中的第一个单词,就应该使用next()方法。 总之,Java Scanner类中的next()方法和nextLine()方法都列于接收用户输入。next()方法用于读取单个单词,而nextLine()方法用于读取整行文本。在使用Scanner类读取输入之前一定要清空缓冲区,以免读取到不正确的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值