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

正在跳过扫描程序nextLine[重复]

东方智敏
2023-03-14

这是我使用的代码:

System.out.println("Create a name.");
name = input.nextLine();
System.out.println("Create a password.");
password = input.nextLine();

但当它到达这一点时,它只会说“创建一个名称”。和“创建密码”。两个都在同一时间,然后我必须打一些东西。所以它基本上跳过了需要键入字符串的扫描器部分。在“创建名称”之后。和“创建密码”。然后输入,名称和密码都改为我输入的内容。我怎么解决这个?

这是全班学生。我只是在测试,所以它实际上不是一个程序:

package just.testing;

import java.util.Scanner;
public class TestingJava
{
    static int age;
    static String name;
    static String password;
    static boolean makeid = true;
    static boolean id = true;

    public static void main(String[] args){
        makeid(null);
        if(makeid == true){
            System.out.println("Yay.");
        }else{

        }
    }
    public static void makeid(String[] args){
        System.out.println("Create your account.");
        Scanner input = new Scanner(System.in);
        System.out.println("What is your age?");
        int age = input.nextInt();
        if(age<12){
            System.out.println("You are too young to make an account.");
            makeid = false;
            return;
        }
        System.out.println("Create a name.");
        name = input.nextLine();
        System.out.println("Create a password.");
        password = input.nextLine();
        return;
    }
}

抱歉我语法不好。我不是英国人,所以我很难解释。

共有1个答案

程凯定
2023-03-14

nextInt()获取了输入号,但没有获取EOLN:

Create your account.
What is your age?
123 <- Here's actually another '\n'

因此,在create name之后对nextLine()的第一个调用接受它作为输入。

System.out.println("Create a name.");
name = input.nextLine(); <- This just gives you "\n"

用户integer.parseint(input.nextLine())或在读取数字后添加另一个input.nextLine()将解决此问题:

int age = Integer.parseInt(input.nextLine());

int age = input.nextInt();
input.nextLine()

请参阅此处的重复问题。

 类似资料:
  • 这是我程序的主要方法。当调用nextLine()函数时,扫描器解析变量L而不是space时,我遇到了一个问题。不过,nextInt()可以按照预期工作。我的程序在试图用integer.parseint()函数解析空字符串时崩溃了。 第一个输入是指定将要进行的行数的整数,下面的输入是空格分隔的整数。 堆栈跟踪如下:

  • 问题内容: 我正在使用嵌套循环从字符串行(从文本文件)中提取数字,如下所示: 问题在于此代码将跳过所有空格,但是我也需要使用这些“空格”。那么可以返回空格还是我需要使用其他东西? 我的文本文件可能包含以下内容: 这些空白行各包含1条,这就是我需要返回的行。 问题答案: 使用扫描仪和方法,您将找到解决方案,因为这将使您能够捕获空白行或空白行。

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

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

  • 代码如下: “客人叫什么名字?客人的电话号码是多少?"已初始化为"。第36行-39行。不确定这个问题正在发生。我正在使用一些包含在我的酒店类中的方法,但是我几乎可以肯定它们不包含导致这个错误的错误。同样,do循环在代码的后面完成。

  • 一段时间以来,我一直在做一个作为拼字字典的编程作业。该程序接受用户的输入,并输出一个包含单词列表的文件,这取决于用户从菜单中请求的内容。我遇到的问题与Scanner.nextLine()有关。 我不是很清楚为什么,但由于某种原因,有时我必须按一次enter键,然后我的代码才会接受我的输入并将其存储为变量。本质上,我最终输入了两次输入。我尝试在代码周围插入Scanner.nextLine()以“占用