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

next()和nextLine()都不帮助用空格存储名称

陈实
2023-03-14

我目前正在使用扫描仪记录用户输入的字符串并打印出来。如果用户输入的是一个名字,比如Alan,它就可以正常工作。如果我输入一个带有空格的名称,比如Alan Smith,它会返回一个错误,称为InputMisMatchException。

我在这里读过类似的案例,他们建议使用nextLine()而不是next()。这是有道理的,但对我来说也不行。当我使用nextLine()时,它会立即跳过输入名称的步骤,并返回循环的开头,要求我再次输入选项。请建议我如何纠正这一点。非常感谢。

import java.io.IOException;
import java.util.Scanner;

public class ScannerTest {
    static String name;
    static Scanner in = new Scanner(System.in);
    static int choice;

    public static void main(String[] args) {      
        while(choice != 5){
            System.out.print("\nEnter Choice :> ");
            choice = in.nextInt();

            if(choice == 1){
                try{
                    printName();
                }
                catch(IOException e){
                    System.out.println("IO Exception");
                }
            }
        } 
    }  
    private static void printName()throws IOException{
        System.out.print("\nEnter name :> ");
        name = in.next();
        //name = in.nextLine(); 
        if (name != null){
            System.out.println(name);
        }
    }  
}  

共有3个答案

姜锋
2023-03-14

在调用name=in之前。next() 在=新扫描仪(System.in)中执行此操作 对象需要重建自身,因为它已经有了值。祝你好运

方宜
2023-03-14

问题很简单:当您提示用户输入他/她的选择时,选择将是一个int,后跟一个新行(用户将按enter键)。当您在中使用时。nextInt()要检索选项,只会使用数字,新行仍将在缓冲区中,因此,当您在中调用时。nextLine(),您将获得介于数字和新行之间的任何内容(通常为零)。

你要做的,是调用in.nextLine()读取数字清空缓冲区:

choice = in.nextInt();

if (in.hasNextLine())
    in.nextLine();
公羊曜灿
2023-03-14

试试这个:添加name=in。nextLine() choice=in之后。nextInt()

然后尝试替换中的name=in。next() 带有name=in。nextLine()

说明:在扫描程序调用nextInt()后,它会获取第一个值,并将字符串的其余部分留给\n。然后,我们使用nextLine()使用字符串的其余部分。

第二个nextLine()用于获取字符串参数。

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

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

  • Here’s a list of the common problems you might face, and the possible solutions. I see a blank (white) page instead of the Laravel ‘Welcome’ page! Run the following command from the Laravel root direc

  • 社区帮助 社区帮助是 adobe.com/cn 上的一个集成环境,允许您访问由 Adobe 和行业专家主持的社区生成的内容。用户的注释可帮助您找到答案。搜索 “社区帮助 ”,查找 Web 上关于 Adobe 产品和技术的最佳内容,包含以下资源: 视频、教程、提示和技巧、博客、文章及设计和开发人员的示例。 完整的联机帮助。此联机帮助会定期更新且比随产品提供的 “帮助 ”更完整。访问帮助时,如果连接到

  • 我正在制作一个程序,并使用用户输入。当我得到一个字符串时,我总是使用. nextLine(),但我也使用了. Next(),它做同样的事情。有什么区别呢? 有什么区别?

  • 本文向大家介绍winforms 使用帮助类显示帮助,包括了winforms 使用帮助类显示帮助的使用技巧和注意事项,需要的朋友参考一下