首页 > 解决方案 > 我应该如何重新提示用户输入有效字符串?

问题描述

我不是最好的程序员,而且对它很陌生。我已经尝试了几个小时来让这个程序正确,但我似乎无法想出一种方法让它按照我想要的方式运行。这是我想要做的:

编写一个程序,提示用户输入他们的姓名,然后显示“Hello, [Name Here]!”

如果用户没有输入任何内容但仍然按 Enter 键,则应重新提示输入用户名。此流程应如下所示:

Whats is your name?
Please Enter your name: 
Please Enter your name: Programming Practice
Hello, Programming Practice!

在我开始在我的 IDE 中编写任何东西之前,这是我对程序的看法:

  1. 询问用户的姓名
  2. 让他们有机会输入他们的名字
  3. 如果他们的输入不是名称格式,给他们输出说格式不正确
  4. 让他们有机会以正确的格式输入
  5. 重复第 4 步和第 5 步,使其输入正确的格式
  6. 打印“你好,[这里的名字]!”
  7. 结尾

这是我到目前为止所得到的:

package lol;
import java.util.Scanner;
public class Whatever {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in); 

        System.out.printf("What is your name?\n"); 

        String name = sc.nextLine(); 

        if (name != "Programming Practice")
        {
            System.out.println("Please enter a valid name");
            String name2 = sc.nextLine();
            System.out.println("Hello, " + name2 );
        }

        else
        {

        System.out.println("Hello, " + name ); 
        }

    }
}

现在,无论我的条目如何,我得到的输出是:

What is your name?

Please enter a valid name

Hello,

标签: java

解决方案


您可以将 sc.nextLine() 放入 while(true) 循环中,并在获得您认为有效的结果时中断。

String name = "";

while(true) {
    name = sc.nextLine();
    if (name.equals("Programming Practice")) { 
        System.out.println("Hello, " + name); 
        break;
    } else {
        System.out.println("Please enter in the correct format");
        continue;
    }
}

推荐阅读