当前位置: 首页 > 知识库问答 >
问题:

了解扫描仪的nextLine()、Next()和nextInt()方法

刁钧
2023-03-14

我试图了解这三种方法是如何工作的。我是这样理解他们的:

  • nextLine()读取当前行的剩余部分,即使该行为空

假设我有以下代码:

import java.util.Scanner;

public class Welcome2
{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Next enter two words:");

        int n; 
        String s1, s2; 

        n = keyboard.nextInt(); 
        s1 = keyboard.next(); 
        s2 =  keyboard.nextLine(); 
        System.out.println(" n is " + n + " s1 is " + s1 + " s2 is " + s2); 
    }
}

如果我的输入是:

2 

Hi 

Hello 

然后我在屏幕上得到以下输出:

n is 2 
s1 is hi 
s2 is  

为什么s1的值为“HI”?

这是否意味着方法next()读取下一行,即使第一行的转义字符尚未被nextInt()读取?

共有2个答案

芮安顺
2023-03-14

如果你的输入是2 Hello hi

nextInt()-只需将下一个标记读取为int(这里-它是2),否则会给出错误

next()-只需读取下一个标记(这里是hello

nextline()-它读取一行直到得到换行符(此处-在读取nextline输入的上一个2 hello之后,下一个;nextline读取hi,仅因为在此之后它找到了一个换行符)

如果输入是

2 

Hi 

Hello 

nextInt,next与上述讨论相同。

在nextline()中,它在完成next()读取的输入后查找换行符。因此,nextline()停止读取输入以获取换行符。

汪晟睿
2023-03-14

nextLine()读取当前行的其余部分,即使该行为空。

正确。

nextInt()读取整数,但不读取转义序列“\n”。

更正1

Next()读取当前行,但不读取\n。

不正确。实际上,Next()方法读取下一个完整的令牌。这可能是也可能不是当前行的其余部分。它可能会,也可能不会使用行尾,这取决于行尾在哪里。javadoc描述了精确的行为,你可能需要自己仔细阅读,以便你能完全理解细微差别。

所以,在你的例子中:

>

  • nextInt()调用使用2字符,并将位置留在NL

    next()调用跳过NL,使用Hi,并将光标留在第二个NL。

    nextLine()调用将使用第2行的其余部分;i、 e.NL

    1。。。除了你的术语是错误的。当数据被读取时,它不是一个转义序列。这是一个行结束序列,可能由CR、NL或CR NL组成,具体取决于平台。您正在讨论的转义序列是Java源代码中的字符串和字符文本。他们可能

  •  类似资料:
    • 问题内容: 我试图了解这三种方法是如何工作的。这是我对它们的理解: 读取当前行的其余部分,即使它为空。 读取一个整数,但不读取转义序列“ \ n”。 读取当前行,但不读取“ \ n”。 假设我有以下代码: 如果我的输入是: 然后,我在屏幕上得到以下输出: 为什么会有“ HI”的值? 这是否意味着即使没有读取第一行的转义字符,该方法也会读取下一行? 问题答案: nextLine()读取当前行的其余部

    • 我有两个do-while循环用于进行自定义输入验证。问题是它会自动进入下一个do while循环。正确插入名称后,我必须放置一个新的下一行():name=scanner。nextLine() 我知道当光标停留在那里时,nextLine()会出现“小故障”,您必须调用nextLine()才能继续。资料来源:https://www.geeksforgeeks.org/why-is-scanner-sk

    • < b >想改进这个问题?更新问题,以便通过编辑此帖子用事实和引用来回答问题。 我知道使用nextInt()方法不会消耗新行字符,所以为了处理这个问题,我需要使用一个空的nextLine()方法继续。 我的问题是,作为一种替代解决方案,程序是否会对任何类型的运行时错误开放以使用两个扫描仪,一个用于字符串输入,一个用于整数? 感谢您的任何帮助! (经过编辑,因此问题不那么主观)

    • 我承认,我已经研究了很多(类似的)问题,但我似乎无法理解我为一个基本的SPOJ问题(http://www.SPOJ.com/problems/onp/)编写的以下代码中的上下文用法(http://www.SPOJ.com/problems/onp/): 如果我使用nextLine()而不是next(),那么SPOJ引擎会生成一个‘错误的答案’响应。 此外,在postfixString函数中使用St

    • 在Java方面,我是一个业余爱好者,所以请原谅我的问题,如果它看起来很愚蠢:-P我有以下代码,旨在计算文件中的行数: 所以它很好,但我想将扫描仪重新用于其他目的,但nextLine已移动到文件的最后一行,我想将其重置回第一行。 (取而代之的是,我不得不使用另一台扫描仪来实现另一个目的,而在我看来,这似乎没有它应有的优雅。) 我肯定肯定有一种扫描仪方法可以将计数器重置为零? 谢谢 CJ

    • 我是Java新手。我必须从2D数组向终端显示int系数。我想在同一行中为同一卖家提供每个值。有一个换行符(由于扫描仪?)。我一直在寻找分隔符system.in但我不明白如何使用它,如果这是合适的。 请帮帮我好吗?先谢谢你 最终结果: 输入卖家数量5 输入型号4的数量 卖家1 0 3. 2个 0