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

Java使用scanner.nextLine()

宋博易
2023-03-14
问题内容

尝试使用java.util.Scanner中的nextLine()方法时遇到麻烦。

这是我尝试过的:

import java.util.Scanner;

class TestRevised {
    public void menu() {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter a sentence:\t");
        String sentence = scanner.nextLine();

        System.out.print("Enter an index:\t");
        int index = scanner.nextInt();

        System.out.println("\nYour sentence:\t" + sentence);
        System.out.println("Your index:\t" + index);
    }
}

示例1:此示例按预期方式工作。该行String sentence = scanner.nextLine();等待输入,然后再继续System.out.print("Enter an index:\t");

产生输出:

Enter a sentence:   Hello.
Enter an index: 0

Your sentence:  Hello.
Your index: 0
// Example #2
import java.util.Scanner;

class Test {
    public void menu() {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("\nMenu Options\n");
            System.out.println("(1) - do this");
            System.out.println("(2) - quit");

            System.out.print("Please enter your selection:\t");
            int selection = scanner.nextInt();

            if (selection == 1) {
                System.out.print("Enter a sentence:\t");
                String sentence = scanner.nextLine();

                System.out.print("Enter an index:\t");
                int index = scanner.nextInt();

                System.out.println("\nYour sentence:\t" + sentence);
                System.out.println("Your index:\t" + index);
            }
            else if (selection == 2) {
                break;
            }
        }
    }
}

示例2:此示例无法正常工作。本示例使用while循环以及if-else结构允许用户选择要执行的操作。一旦程序到达String sentence = scanner.nextLine();,它就不会等待输入,而是执行该行System.out.print("Enter an index:\t");。

产生输出:

Menu Options

(1) - do this
(2) - quit

Please enter your selection:    1
Enter a sentence:   Enter an index: 

这使得不可能输入句子。

为什么示例2不能按预期工作?唯一之间的区别。12是那个 2具有while循环和if-else结构。我不明白为什么这会影响Scanner.nextInt()的行为。


问题答案:

我想你的问题是

int selection = scanner.nextInt();

仅读取数字,而不读取行尾或数字之后的任何内容。当你声明

String sentence = scanner.nextLine();

这将读取行的其余部分及其上的数字(我怀疑该数字之后没有任何内容)

尝试放置一个扫描仪。如果你打算忽略该行的其余部分,则在每个nextInt()之后。



 类似资料:
  • 问题内容: 我在远程服务器上有一个管理Web应用程序。该应用程序是使用MEAN堆栈编写的,我列出了连接到Web应用程序所需的所有RESTful路由。 我正在编写一个Java客户端应用程序,该应用程序需要从该管理应用程序发送和接收数据。如果我具有服务器的IP地址和REST路由,如何将客户端连接到Web应用程序? 我想我需要提供到服务器和REST API文件的URL连接,然后仅调用诸如和的路由功能。

  • 主要内容:安装Redis驱动,连接Redis服务器,Java Redis字符串,Java Redis列表,Java Redis键在开始学习本节内容之前, 首先需要您掌握 Java 编程语言,其次确定您已经安装了 Redis 服务及 Java Redis 驱动,并且能够成功运行 Java 程序。 本节介绍如何在 Java 中使用 Redis。 安装Redis驱动 如果想在 Java 环境下操作 Redis ,您需要安装相应的 Redis 驱动程序,也就  jedis.jar 包(点击下载),然后将

  • 引入 Maven 依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用

  • 引入 Maven 依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用

  • 引入 Maven 依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <version>${shardingsphere.version}</version> </dependency> 规则配置 Sha

  • 我试图使用Java使用REST API。但是,当我运行代码时,它向我显示了这个异常。我不明白这是什么意思,我试图寻找解决方案,但我没有得到它:( 这是连接代码: 当我运行代码时,它会向我显示以下异常: Exception:java.security.cert.CertificateException:没有找到与IP地址匹配的主题替代名称 原因:java.security.cert.Certific