java - 如何编写 Do/While 验证?
问题描述
我目前正在学习 Java 课程的介绍,我真的很想改进,但我正在努力完成这项任务。任务的要求是
- 实现一个循环,允许用户通过键入yes 继续玩游戏。
- 跟踪用户:使用递增变量的赢、输和玩过的游戏
- 当用户不再希望继续时,打印显示跟踪变量的结果:赢、输和玩过的游戏
- 实施输入验证循环以确保用户输入正确的输入 (h, t, H, T)
我相信我已经完成了除了最后一个之外的所有事情,我已经尝试过无数次使用 do 和 while 循环,但我得到的最接近的是错误的输入循环,而正确的输入会绕过所有其他 if/while/else 语句. 如果可能的话,我将非常感谢有人查看我的代码并解释我可以做得更好,以及我如何完成或接近最后一个要求。
谢谢!
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input, inputUpper;
char userGuess;
char coinFlip;
int randNum;
int wins = 0;
int losses = 0;
int total = 0;
String choice = "yes";
do {
System.out.print("I will flip a coin guess 'H' for heads or 'T' for
tails --> ");
input = scan.nextLine();
inputUpper = input.toUpperCase();
userGuess = inputUpper.charAt(0);
randNum = (int) (Math.random() * 2);
if(randNum == 0)
{
coinFlip = 'H';
}
else
{
coinFlip = 'T';
}
System.out.println("\nYou picked " + userGuess +
" and the coin flip was " + coinFlip + " so ...");
if(userGuess == coinFlip)
{
System.out.println("You win!");
wins ++;
total ++;
}
else
{
System.out.println("Better luck next time ...");
losses ++;
total ++;
}
System.out.println("Do you want to continue(yes/no)?");
choice=scan.nextLine();
} while(choice.equalsIgnoreCase("yes"));
System.out.println("Thank you for playing.");
System.out.println("You guessed correctly this many times: " +wins);
System.out.println("You guessed incorrectly this many times: " +losses);
System.out.println("During this session you've played this many games: " +total);
}
}
我希望程序需要 T/t 或 H/h 才能继续,如果用户输入了不正确的字母或数字,它会要求他们输入 t 或 h。
解决方案
这是验证输入的简单方法:
do {
System.out.print("I will flip a coin guess 'H' for heads or 'T' for tails --> ");
input = scan.nextLine();
inputUpper = input.toUpperCase();
} while (!inputUpper.equals("T") && !inputUpper.equals("F"));
对于“是”/“否”,你可以在最后做同样的事情。
我认为你在这方面做得很好。
推荐阅读
- javascript - 谷歌脚本:如何在 setValue 中放置一个范围
- javascript - React - 文件上传器按钮无法正常工作
- xamarin.forms - Xamarin.Forms MvvM Prism 软件和硬件后退按钮
- javascript - 带有 for 循环和 push 方法的函数返回 250 个长度为 1 的数组,而不是长度为 250 的单个数组
- java - NoSuchMethodError:org.springframework.util.CollectionUtils.newLinkedHashMap
- php - 我正在寻找导致内存泄漏的 PHP 脚本
- css - 在 CSS 中使用媒体查询
- javascript - 根据 offsetHeight 和 clientHeight 计算 div 元素的高度在 Css 中不起作用
- python - 重复使用一个系统的凭据登录到另一个系统
- python - TypeError:不再支持带时间戳的整数和整数数组的加法/减法