基本 Java HiLow 猜谜游戏

Posted

技术标签:

【中文标题】基本 Java HiLow 猜谜游戏【英文标题】:Basic Java HiLow guessing game 【发布时间】:2022-01-06 21:02:30 【问题描述】:

我完全知道这个问题已经被问过很多次了,它是 CSC 的经典第一年问题。我不是在寻找问题本身的解决方案。我认为我基本上已经完成了,但是我错过了一些我找不到的东西。

这是我的代码:

import java.util.Scanner;
import java.util.Random;

public class HiLow

    public static void main (String[] args) 
    
        Random generator = new Random();
        Scanner scan = new Scanner(System.in);
        int num1,guess;
        int count = 0;
        num1 = generator.nextInt(100) + 1;
        while(true) 
            System.out.print("Enter an integer between 1 or 100 or enter 0 at anytime to quit: ");
            guess = scan.nextInt();
            count++;
            if(guess == num1 || guess == 0) 
                if(guess == 0) 
                    System.out.println("Thanks for playing");
                    break;
                
                System.out.println("Congrats you've guessed correct and your total guesses is " + count );
                break;
            
            else if (guess > 100 || guess < 1) 
                System.out.print("I see you cannot follow instructions. I said ");
                count--;
            
            else if (guess > num1) 
                System.out.println("You have guessed too high. ");
            
            else 
                System.out.println("You have guessed too low.");
            
        
    

我的问题是我需要在“如果用户退出或成功猜到正确的数字,提示用户看他们是否想再次玩”时提示用户。我迷路了,不知道如何在休息后从头开始继续我的 while 循环。有没有办法结束我从 (guess == num1 || guess ==0) 得到的中断条件并指示我的程序在 while(true) 语句处重新开始?

谢谢

【问题讨论】:

此时对你来说一个很好的学习练习是理解 break 和 continue 语句之间的区别。查找它们并在当前问题之外构建一个非常简单的示例。这将帮助您找到您的这个问题的答案。 是的,浏览了我的课堂笔记,在网上查了一下,但这些都没有真正回答我如何重新启动我的 while 循环的问题。不过还是谢谢。 【参考方案1】:

我会说搜索continue;

进一步帮助的提示:

    continue 语句用于使循环回到起点,请尝试使用它而不是您希望用户继续的 break

    您需要进行某种检查如果用户想要继续,(尝试让他们输入您检查的某些特定 int,p.s 负数也是整数)

【讨论】:

感谢您抽出宝贵时间回答我,但这根本没有帮助。我知道 continue 会跳到循环的下一部分,但这并不能帮助我理解如何重新启动整个循环。我知道这对你们很多人来说很容易,但是说“它太低级”只会让我更加沮丧。 @Coalharbour:只是一个简短的说明(因为我也编辑了这个答案) - 在您发表评论后,Ahmed Amer(回答者)用几个“提示”更新了这个答案。【参考方案2】:

@Ahmed 认为你应该continue,我宁愿不break,或者有条件地break

【讨论】:

【参考方案3】:

您可以通过多种方式完成此操作,一种是使用 Scanner 类提示用户“按 q 退出”对话框,其中 .next() 在用户按 Enter 键时返回字符串:

  if(guess == num1 || guess == 0) 
            if(guess == 0) 
                System.out.println("Thanks for playing");
            else
                System.out.println("Congrats you've guessed correct and your total guesses is " + count );
                
            
            System.out.println("would you like to play again [y/n]?");
            if(scan.next().equals("y"))
              num1 = generator.nextInt(100) + 1;
              count=0;
            else
              break;
            
        

如果这就是你的意思。希望我有所帮助。 或者你可以让它只在零处退出,如果是这样,只需删除第二个中断并将其替换为 num1 = generator.nextInt(100) + 1;设置要猜测的新值。

【讨论】:

这就是我要说的! 是的,我想写一些代码来提供帮助。还有,我不明白。休息有什么问题?为什么不只是有条件地打破循环,例如当用户输入 n 时? 当用户选择再次播放时,你不应该也重置变量count吗? 是的,你必须这样做。让我解决这个问题。

以上是关于基本 Java HiLow 猜谜游戏的主要内容,如果未能解决你的问题,请参考以下文章

3 数字猜谜游戏

AHOI 2015 猜谜游戏

猜谜游戏,discord.py 机器人

为啥 Rust 的示例猜谜游戏允许具有不同返回类型的 match 语句?

将机器学习应用于猜谜游戏?

CPP猜谜游戏不工作,我输入名字后它就停止了