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

为什么扫描仪对象跳过字符串输入nextLine()后使用nextInt()函数内部循环?

翟承志
2023-03-14

问题发生在第一次迭代输入整数值后,程序应该在第二次迭代时停止输入String,但跳过了字符串并等待nextInt()输入。

代码如下所示:

        for (int i=0; i<id.length; i++){
        System.out.println("Enter customer " + (i+1) + " name: " );
        name[i] = input.nextLine(); //this is skipped on the 2nd iteration

        System.out.println("Enter customer " + (i+1) + " ID: ");
        id[i] = input.nextInt();
        }

共有2个答案

诸葛砚
2023-03-14

你的台词可能是这样的:

1 \n
2 \n
3 \n

如果从读取int开始,则“指针”移动到1和之间的位置。如果然后转到新行,指针将经过下一行。每当你读一个int,你不会读整行。要解决这个问题,只需添加输入。nextLine()

谷梁凌
2023-03-14

<代码>输入。nextInt()仅使用整数,而不使用行末尾的换行符。当执行到达输入时。nextLine()在循环的下一次迭代中,上一次迭代中的换行符立即被消耗并放在名称[i]上。

您可以通过添加另一个输入来解决这个问题。使用输入读取整数后的nextLine()。nextInt()。演示如下:

for (int i=0; i<id.length; i++){
    ...
    id[i] = input.nextInt();
    input.nextLine(); // consume spare newline character
}
 类似资料:
  • 这里是Java新手,尝试扫描下面表单中的输入: 3 3 3 101 000 101 拜托,有更有经验的人能教我如何解决这个问题吗?我发现一些问题与。nextline()和。nextint()有类似的问题,但不完全是这样。不过,如果真的是复制品,我提前道歉... (如果需要,我会添加更多信息)

  • 我创建了一个简单的扫描器,用于计算中的字符串数。txt文件。每个字符串位于下一行。它算错了,每次它给我数字297,甚至有超过20000个字符串。这个txt文件是由我编写的另一个程序创建的,它从网站获取链接,并使用FileWriter和BufferedWriter将其保存到。txt文件。可能有什么问题? 编辑:字符串示例:

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

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

  • 因此,我是一个新的Java程序员,我正试图弄清楚为什么一段代码不能工作。我遇到的问题是“String interests=input.nextLine();”这一行,它跳过了用户的输入并跳转到下一个System.out,所以它只显示“Your Profile...”。在允许用户输入任何数据之前。抱歉,如果这是一个愚蠢的问题,我是很新的!

  • 我试图从用户那里得到2个整数。这是我的代码的相关部分: 起初,它抛出一个,所以我使用了。现在,它只需跳过扫描器并立即调用。