此作业分配用于使用“ do while”循环,而我正在尝试让该程序要求输入球员姓名,然后输入球衣号码。需要包括的主要部分是程序,用于在输入数字时输入名称,然后程序输出表明该名称不正确,然后再次询问以及是否输入字母来输入球衣号码,该程序将其识别为错误并再次询问。我遇到的问题是,当我运行代码并输入球衣号码的字母时,输出会连续运行而不会暂停新的用户输入。
程序输出如下所示-
运行: 请输入玩家名称: 45 错误:您没有输入名称。 请再试一遍。输入播放器名称: 史密斯 您输入了有效的姓名。
请输入球衣号码: F 错误:未输入整数。 请重试:
请输入球衣号码: 错误:未输入整数。 请重试:
请输入球衣号码: 错误:未输入整数。 请重试:
请输入球衣号码: 错误:未输入整数。 请重试:
(这种情况一直持续到我停止运行为止,从不暂停新输入)
我已经阅读了有关布尔值和循环的教科书,但是我已经遇到了麻烦,因此我不太确定从哪里开始进行故障排除。
Scanner scnr = new Scanner(System.in);
String nameTemp;
int jerseyNumTemp = 0;
boolean validJerseyNum = false;
String regex =".*[a-zA-Z]+.*";
Player player1 = new Player();
System.out.println("Please enter player name: ");
nameTemp = scnr.next();
if (Pattern.matches(regex, nameTemp)) {
System.out.println("You entered a valid name.");
}
else {
System.out.println("Error: you did not enter a name.");
System.out.println("Please try again. Enter player name: ");
nameTemp = scnr.next();
if (Pattern.matches(regex, nameTemp)) {
System.out.println("You entered a valid name.");
}
else {
System.out.println("Error: you did not enter a name. "
+ "You are out of attempts.");
}
}
do {
System.out.println("\nPlease enter jersey number: ");
if (scnr.hasNextInt()){
jerseyNumTemp = scnr.nextInt();
if (jerseyNumTemp >= 0){
validJerseyNum = true;
}
else {
System.out.println("Error: entered negative number.");
System.out.println("Please try again:");
}
} else{
System.out.println("Error: not entered an integer.");
System.out.println("Please try again:");
}
} while(!validJerseyNum);
我正在寻找可以识别字母不是数字的程序,然后要求再次输入,直到输入正确的数字为止。