java - 我应该如何重新提示用户输入有效字符串?
问题描述
我不是最好的程序员,而且对它很陌生。我已经尝试了几个小时来让这个程序正确,但我似乎无法想出一种方法让它按照我想要的方式运行。这是我想要做的:
编写一个程序,提示用户输入他们的姓名,然后显示“Hello, [Name Here]!”
如果用户没有输入任何内容但仍然按 Enter 键,则应重新提示输入用户名。此流程应如下所示:
Whats is your name?
Please Enter your name:
Please Enter your name: Programming Practice
Hello, Programming Practice!
在我开始在我的 IDE 中编写任何东西之前,这是我对程序的看法:
- 询问用户的姓名
- 让他们有机会输入他们的名字
- 如果他们的输入不是名称格式,给他们输出说格式不正确
- 让他们有机会以正确的格式输入
- 重复第 4 步和第 5 步,使其输入正确的格式
- 打印“你好,[这里的名字]!”
- 结尾
这是我到目前为止所得到的:
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,
解决方案
您可以将 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;
}
}
推荐阅读
- mysql - 通过变音符号搜索的MYSQL错误结果
- python - BeautifulSoup decode_contents() 返回 < 而不是 <
- python - AttributeError:“AxesSubplot”对象没有属性“rowNum”
- php - 将 cURL 模块导入 AWS Lambda
- docker - Redis 在 MULTI 中错误 EXPIRE
- laravel - 追加到已经获取的集合 - 雄辩
- c# - XPath如何选择具有相同值的子节点
- meshlab - 抽取网格子集
- apache-spark - 计算给定日期范围内窗口中的行数
- javascript - 向后递归