Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个带有循环的游戏,将密码与用户输入进行比较_Java - Fatal编程技术网

Java 创建一个带有循环的游戏,将密码与用户输入进行比较

Java 创建一个带有循环的游戏,将密码与用户输入进行比较,java,Java,我被要求为学校制作一个智囊团游戏。这个项目从来没有正常运行过,我相信我在这个过程中走错了方向。虽然作业已经过期,但我想知道我错在哪里了。请记住,我们还没有讨论阵列 这是任务描述: 您的程序将选择一个随机的4位数字作为密码。您的程序必须提示用户输入一个4位数字作为他们的猜测。程序将以一条消息响应,指示用户猜测的数字中有多少与机密号码中相同位置的数字相同。例如,如果密码是3749,而用户的猜测是9753,那么程序将以您匹配的消息1响应,因为用户猜测中的7位数字中只有一位与密码中相同位置的数字相同。该

我被要求为学校制作一个智囊团游戏。这个项目从来没有正常运行过,我相信我在这个过程中走错了方向。虽然作业已经过期,但我想知道我错在哪里了。请记住,我们还没有讨论阵列

这是任务描述: 您的程序将选择一个随机的4位数字作为密码。您的程序必须提示用户输入一个4位数字作为他们的猜测。程序将以一条消息响应,指示用户猜测的数字中有多少与机密号码中相同位置的数字相同。例如,如果密码是3749,而用户的猜测是9753,那么程序将以您匹配的消息1响应,因为用户猜测中的7位数字中只有一位与密码中相同位置的数字相同。该程序将允许用户继续猜测,直到他们猜到正确的密码。用户输入密码后,程序将输出用户查找密码的总猜测次数计数。然后程序会询问用户是否愿意再次播放。如果用户回答“是”,则程序将选择另一个随机4位数字,并按上述方式继续播放

这项任务最好从哪里开始? 使用循环的最佳方式是什么? 如何选择密码的不同部分

我现在能得到的任何帮助都会帮助我在班上迎头赶上

导入java.util.Scanner; 公开课作业04{ 公共静态无效字符串[]args{ 扫描仪输入=新的ScannerSystem.in; System.out.println--MASTERMIND--; System.out.printl猜测4位数字!; int secretNumber=intMath.random*1000+1; int usersGuess=0; int计数器=0; int猜测计数=1; forint i=0;i

for循环条件i您猜numberrandomizer是错误的:它将只生成3位数字。将其用于4位数字:

  int secretNumber = (int)(Math.random() * 10000 + 1); 

此外,我建议使用字符串输入,或者更好的做法是,将整数输入解析为字符串,并使用charAt方法进行比较。此外,如果正确猜测的数字超过1位,则使用break可能会产生一些错误。

对于for循环,第一个循环不是一个很好的情况。您应该使用while循环。while will继续迭代,可能是无限的,直到计算它的条件不再为真

因为你的程序应该一直持续到用户猜中为止,或者直到他猜对了并且不想再玩了为止,所以你应该有一个布尔标志,告诉游戏它应该继续循环。如果游戏在一个回合中正确的猜数等于4时赢了,那么你应该提示用户是否想继续玩,如果他们说不,你只要关掉旗子,程序就会退出

像这样的

boolean continue = true;
int correctGuesses;
int numberOfTimesAttempted = 0;
while(continue){
   numberOfTimesAttempted++;
   correctGuesses = 0;
   //Your game logic
   
   if(correctGuesses == 4){
      System.out.println("Do you wish to continue? Y or N");
      char answer = sc.nextLine();
      if(char.toUpper('N'){
         continue = false;
         System.out.println("It took you " + numberOfTimesAttempted + "to win!");
      }
   }
}
正如一些用户所指出的,您还应该有逻辑来验证用户是否严格输入了4个数字。 不要单独比较每个数字,只需将数字转换为字符数组,并创建一个for循环,循环遍历它。如果当前索引处的字符等于机密数字中的字符,请增加猜测计数。 在每个循环结束时,打印正确的猜测数。如果猜测数为4,则用户获胜。

我建议您在需要比较字符串值时使用等于而不是==,另一种方法是在需要使用==运算符时直接与字符类型进行比较