m0_70353314 2023-04-18 23:48 采纳率: 71.4%
浏览 31
已结题

Hi-Lo猜猜游戏程序java

设计并实现一个Hi-Lo猜猜游戏程序。程序从1到100中随机选择一个数,然后反复让用户猜该数字是什么直到对或用户退出为止。每猜一次都告诉用户猜测的结果是对还是过大或过小。使用一个标识值确定用户是否想退出。当用户猜对时报告其猜测的次数。每次游戏结束时询问用户是否想继续玩,直到用户选择结束。

为什么我玩完一次,虽然显示了问你是否继续的选择,但不能进行选择直接结束了,不能玩第二轮?

img


import java.util.*;
import java.util.Random;

public class hilo 
{
    public static void main(String[] args)
    {
        final int Max = 100;
        int answer, guess;
        String str, author = "y";;       
        Scanner scan = new Scanner(System. in);
        
            int count = 0;
            Random generator = new Random ();
            answer = generator.nextInt(Max) + 1;
            System.out.println("Start play (y/n)?: ");
            author = scan.nextLine();
            while(author.equalsIgnoreCase("y"))
            {
                System.out.print("Guess a number between 1 and" + Max + ".\nEnter your guess (0 to quit): ");
                guess = scan.nextInt();
                while(guess != 0)
                {
                       count++;
                    if(guess == answer )
                    {
                           System.out.println("Right! Guesses:" + count);
                        break;
                       }
                       else if(guess > answer )
                    {
                        System.out.println("Your guess was too big");
                        System.out.print("Enter your guess (0 to quit): ");
                        guess = scan.nextInt();
                    }
                    else
                    {
                        System.out.println("Your guess was too low");
                        System.out.print("Enter your guess (0 to quit): ");
                        guess = scan.nextInt();
                    }
                }
            
                if(guess == 0)
                {
                     System.out.println("游戏结束")    ;
              
                }
                System.out.println();
                System.out.println("Play again (y/n)?: ");
                author = scan.nextLine();
            }
            if(author.equalsIgnoreCase("n"))
            {
                System.out.println();
                System.out.println("游戏结束");
            }                               
    }
}
  • 写回答

2条回答 默认 最新

  • 语言-逆行者 2023-04-18 23:56
    关注

    有两个问题:

    1. 比较用户输入的字符串时应该使用 equals() 方法而不是 ==,因为 == 比较的是对象引用而不是内容。这样会导致输入 y 时无法进入下一次循环。
    1. 在处理用户输入时要添加一个额外的 scan.nextLine(),以消耗掉上一次输入中的换行符。

    修改后的代码如下:

    import java.util.*;
    
    public class HiLo {
        public static void main(String[] args) {
            final int Max = 100;
            int answer, guess;
            String author = "y";
            Scanner scan = new Scanner(System.in);
    
            while (author.equalsIgnoreCase("y")) {
                int count = 0;
                Random generator = new Random();
                answer = generator.nextInt(Max) + 1;
                while (true) {
                    System.out.print("Guess a number between 1 and " + Max + " (0 to quit): ");
                    guess = scan.nextInt();
                    scan.nextLine(); // 消耗掉换行符
                    if (guess == 0) {
                        System.out.println("Game over");
                        break;
                    } else if (guess == answer) {
                        count++;
                        System.out.println("Right! Guesses: " + count);
                        break;
                    } else if (guess > answer) {
                        count++;
                        System.out.println("Your guess was too big");
                    } else {
                        count++;
                        System.out.println("Your guess was too low");
                    }
                }
                System.out.print("Play again (y/n)? ");
                author = scan.nextLine();
            }
            System.out.println("Game over");
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日

悬赏问题

  • ¥60 Qcustomplot绘制实时动态曲线
  • ¥20 运用matlab画x-y图
  • ¥15 用idea运行项目,运行tomcat报错:断言失败
  • ¥15 Sqlserver查询链接服务器数据问题
  • ¥15 Bibtex4Word 引用中文文献
  • ¥20 用opencv c/c++ 转换成灰度图,然后做一下直方图均衡,输出mp4文件
  • ¥20 matlab中的双层数值积分
  • ¥50 服务器打印水晶报表问题
  • ¥30 gradle环境下javafx项目如何使用druid连接池
  • ¥15 服务器打印水晶报表问题