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

如何正确使用扫描仪类?

翟永春
2023-03-14

我正在为课堂做作业。由于某种原因,程序完全跳过了用户应该键入变量名称的部分。我想不出任何理由为什么它会以这种方式运行,因为我的其余代码位于cardType部分之后(它要求诸如Stringint类型之类的东西)工作正常且有序。

        System.out.println("Enter the card information for wallet #" + 
                                    (n+1) + ":\n---\n");
        System.out.println("Enter your name:");
        String name = scan.nextLine();
        name = capitalOf(name);
        System.out.println("Enter card type");
        String cardType = scan.nextLine();
        cardType = capitalOf(cardType);

共有2个答案

柴宏阔
2023-03-14

它的行为是这样的,因为我很确定您在使用它扫描名称之前使用了相同的扫描仪对象来扫描整数/双精度值。

话虽如此,但这并不意味着您必须创建多个扫描仪对象。(你千万不要那样做)。

解决这个问题的一个简单方法是扫描字符串,即使您期望整数/双精度并将其转换回来。

Scanner scn = new Scanner(System.in);
int numbers = scn.nextInt();  //If you do this, and it skips the next input
scn.nextLine();  //do this to prevent skipping 

//I prefer this way
int numbers = Integer.toString(scn.nextLine());
String str = scn.nextLine();    //No more problems
须捷
2023-03-14

在尝试获取用户名之前,您可能需要阅读最后一行的末尾:

    scan.nextLine(); // add this
    System.out.println("Enter the card information for wallet #" + 
                                (n+1) + ":\n---\n");
    System.out.println("Enter your name:");
    String name = scan.nextLine();
    name = capitalOf(name);
    System.out.println("Enter card type");
    String cardType = scan.nextLine();
    cardType = capitalOf(cardType);
 类似资料:
  • 我是java新手,我的任务是使用扫描器读取数组,并在另一种方法中读取int。 我正在做的是计算一只兔子到达河对岸所需的最小跳跃次数。数组中的int表示从河的一边开始的石头的距离,另一个int表示石头的数量。兔子能跳的最远距离是50。 对于输入和输出: 输入n:7(输入,河中的石头数)32 46 70 85 96 123 145(输入,石头与起点之间的距离,最后一个数字是河的宽度,即目的地(河对岸)

  • 问题内容: 我正在从一个文件中读取,该文件在一行上读取所有内容: 然后,我的扫描程序会从文件中读取该文件并将其放入字符串中: 现在,我希望输出为: 但是相反,我得到了与输入完全相同的东西。也就是说,每个\ n都包含在输出中,并且所有内容都在一行中而不是单独的行中。 我以为Scanner能够正确读取转义字符,但它会像\\ n一样将其复制到String上。 问题答案: 如果写的是文件,则不能使用,因为

  • 问题内容: 我的程序中有一个扫描仪,可以读取文件的一部分并将其格式化为HTML。当我读取文件时,我需要知道如何使扫描仪知道它在一行的末尾,然后开始写入下一行。 这是代码的相关部分,让我知道是否遗漏了什么: 我发现了有关,但是我仍然不知道如何确定何时到达终点。 问题答案: 如果只想使用Scanner,则需要创建一个临时字符串,将其实例化到数据网格的nextLine()(因此它仅返回跳过的行),并创建

  • 问题内容: Go扫描程序包中使用技巧来查找空白: 然后: 由于字符值向左移超过31,因此在某些情况下这不是唯一的吗?我的意思是,当某些char与制表符模数32相同时,它将被识别为空格吗? 问题答案: 完全答案: Spec明确表示,对于无符号操作,我们会屏蔽掉高位,因此低位实际上是“环绕”的。 它起作用的原因是: 实际上是完全适合的价值 在运行时对无符号整数进行的运算可以具有任意大的中间值,并且会回

  • 我正在创建一个用于处理用户输入的类。这样,在其他项目中,我可以从类中调用方法,而不必担心在每个新项目中创建扫描程序。 类中将有一个单独的方法来处理不同的变量类型(float、int、String等)。我从浮动类型开始: 这个方法工作得很好,只是它必须在else部分返回一个float。在本例中,它是一个零,因此当输入到计算器(例如)时,零会导致任何输出等于零。 有没有返回空浮点值的方法来克服这个问题

  • e、 (g) 此扫描仪工作不正常。但在删除close()后,它可以正常工作。 我想原因是“ystem.in”有问题。 请给我答案。 非常感谢。 )首先在a()中调用input.nextLine(),然后在b()中调用scan.nextInt()。我有错误,如NoSuchElementExcema。