java - 重置游戏以在java中重新开始
问题描述
我在用户和计算机之间创建了一个循环 10 轮的骰子游戏——但如果其中一个游戏轮是平局——那么它会询问你是否想再次玩并重新开始游戏。我在最后一部分遇到问题,因为游戏现在随机迭代。有什么建议么?
import java.util.Random;
import java.util.Scanner;
public class Lab2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("User vs. Computer Dice Game");
boolean Correct = false;
boolean Replay = false;
while(Replay == true) {
}
while(Correct == false) {
System.out.println("Do you want to play again? ");
String a = in.nextLine();
System.out.print(a);
if (a.equals("yes")) {
for(int i =1; i<11; i++) {
Random rand = new Random();
int usernum = rand.nextInt(6)+1;
System.out.println("User rolled: "+usernum);
Random rand2 = new Random();
int computernum = rand2.nextInt(6)+1;
System.out.println("Computer rolled: "+computernum);
if (usernum > computernum) {
System.out.println("User wins");
System.out.println();
}if (computernum > usernum) {
System.out.println("Computer wins");
System.out.println();
}
if(usernum == computernum) {
System.out.println("It\'s a tie!");
System.out.println("Do you want to play again? (Y/N) ");
System.out.println();
if (a.equalsIgnoreCase("N")){
Replay = true;
}
else {
Correct = false;
}
}
}
}
System.out.println();
}
}
}
解决方案
一些注意事项:
- 你从来没有设置正确=真。
- 一旦进入“while (Correct==false)”循环,就永远不会测试 Replay。
- 创建 rand2 没有意义。只需重用rand1。
主循环有“for (int i=1;i<11;i++)”。
在那个循环内部,它是一个平局,你问你是否想再玩一次,但没有什么可以结束循环,所以内部 for 循环将继续播放,直到你打到 11。
您可以在中止 for 循环时添加一个 break 语句。
事实上,您最好中止循环,然后在 while 循环的顶部再次提问:
while(Correct == false) {
System.out.println("Do you want to play again? ");
String a = in.nextLine();
System.out.print(a);
if (a.equals("yes")) {
for (int i = 1; i < 11; i++) {
Random rand = new Random();
int usernum = rand.nextInt(6) + 1;
System.out.println("User rolled: " + usernum);
Random rand2 = new Random();
int computernum = rand2.nextInt(6) + 1;
System.out.println("Computer rolled: " + computernum);
if (usernum > computernum) {
System.out.println("User wins");
System.out.println();
}
if (computernum > usernum) {
System.out.println("Computer wins");
System.out.println();
}
if (usernum == computernum) {
System.out.println("It's a tie!");
// Exit early from the for loop:
break;
}
}
}
else
{
Correct = true;
}
}
推荐阅读
- firebase - 在 Cloud Firestore 数据库中保存二进制数据安全吗?
- azure-devops - 如何正确更新我的 PAT,以便我的部署组不会因 PAT 到期而停止工作?
- c# - 错误:更新数据库命令后表 'Table_name' 已存在
- java - 如何读取 .properties 文件中的当前项目路径
- node.js - 我是否必须在需要使用 npm 命令的 bitbucket 管道中的每个步骤中安装 npm
- c# - 如何解释我的方法的参数是“null”而不是“int”
- android - 无法打开从 xamarin.forms 中的 byte[] 下载的文件
- javascript - API调用中的错误处理更改问题
- c# - 如何在 ASP.NET MVC 5 上公开 WS-Federation 元数据?
- elasticsearch - 使用 groupby 并具有等效功能的弹性搜索查询