当前位置: 首页 > 面试题库 >

了解扫描仪的nextLine(),next()和nextInt()方法

方增
2023-03-14
问题内容

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

  • nextLine() 读取当前行的其余部分,即使它为空。
  • nextInt() 读取一个整数,但不读取转义序列“ \ n”。
  • next() 读取当前行,但不读取“ \ n”。

假设我有以下代码:

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()


问题答案:

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

正确。

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

正确1。

next()读取当前行,但不读取“ \ n”。

不正确
实际上,该next()方法读取下一个完整的令牌。那可能不是当前行的其余部分。并且它可能会或可能不会消耗行尾,具体取决于行尾在哪里。确切的行为由javadoc描述,您可能需要自己仔细阅读它才能完全理解细微差别。

因此,在您的示例中:

  1. nextInt()调用使用该2字符并将位置保留在NL

  2. next()调用跳过NL,消耗Hi,并将光标留在第二个NL处。

  3. nextLine()调用消耗第二行的其余部分;即NL

1 …除了您的术语错误。读取数据时,它不是转义序列。它是一个行尾序列,取决于平台,可能由CR,NL或CR
NL组成。您正在讨论的转义序列是Java源代码,字符串和字符文字。它们可能>>代表<< CR或NL或其他字符。



 类似资料:
  • 我试图了解这三种方法是如何工作的。我是这样理解他们的: 读取当前行的剩余部分,即使该行为空 假设我有以下代码: 如果我的输入是: 然后我在屏幕上得到以下输出: 为什么的值为“HI”? 这是否意味着方法读取下一行,即使第一行的转义字符尚未被读取?

  • 我有两个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