yuan生的小小白 2022-01-15 11:03 采纳率: 100%
浏览 46
已结题

我自己用Java写了一个关于猜数字游戏的程序,请问这里有什么可以改进的地方吗?

我自己用Java写了一个关于猜数字游戏的程序,相对来说还算完整,但是因为本人是初学java,知识储备有限,所以相信这个程序一定有什么可以改进优化的地方,想请大家给指出来,发表自己的优化建议,同时也希望自己可以查漏补缺,学习到更多的知识,谢谢大家
import java.util.Random;
import java.util.Scanner;

public class work2 {
    /**
     * 用户猜数字:由用户输入数字范围,进行猜数字
     */
    public static void main(String[] args) {
        guessNumber(10);
    }
    public static void guessNumber(int n) {
        Random random = new Random();
        int ran = random.nextInt(n);
        int ranNext = -1;
        System.out.println(ran);
        Scanner sc = new Scanner(System.in);
        System.out.println("请用户输入一个0-" + n + "之间的数字:\n您一共有5次机会");
        for (int i = 5; i > 0; i--) {
            int num = sc.nextInt();
            if(ranNext >= 0){
                ran = ranNext;
            }
            if (num > n || num < 0) {
                System.out.println("您输入的数字超出范围,请重新输入:");
                num = sc.nextInt();
            } else if (num == ran) {
                System.out.println("恭喜你,猜对了!\n接着下一局请输入yes,输入其他则退出");
                String judge = sc.next();
                if(judge.equals("yes")){
                    i = 6;
                    ranNext = random.nextInt(n);
                    System.out.println(ranNext);
                    System.out.println("请用户输入一个0-" + n + "之间的数字:\n您一共有5次机会");
                }else{
                    break;
                }
            } else if (num != ran) {
                if (i == 1){
                    System.out.println("对不起,你的机会用完了,再玩一次请输入yes,输入其他则退出");
                    String judge = sc.next();
                    if(judge.equals("yes")){
                        i = 6;
                        ranNext = random.nextInt(n);
                        System.out.println(ranNext);
                        System.out.println("请用户输入一个0-" + n + "之间的数字:\n您一共有5次机会");
                    }else{
                        break;
                    }
                }else {

                    System.out.println("对不起,你猜错了!还剩" + (i - 1) +"次机会");
                }
            }
        }
    }
}

  • 写回答

3条回答 默认 最新

  • IT不码农 2022-01-15 12:58
    关注

    这个是在你代码的基础上修改的版本,主要是添加了level级别可以增加下难度,其次是采用递归调用。另外类命名要规范一些,再必要地方加些代码注释。希望对你有帮助。

    package com.test;
    
    import java.util.Random;
    import java.util.Scanner;
    
    /**
     * 类的命名要规范起名的,首字母大写,名字有含义
     */
    public class GuessNumGame {
        /**
         * 游戏级别
         */
        private static int level =1;
        /**
    
         * 用户猜数字:由用户输入数字范围,进行猜数字
    
         */
    
        public static void main(String[] args) {
    
            guessNumber(10);
    
        }
    
        /**
         * 猜数字
         * @param end 0-end 猜数的范围
         */
        public static void guessNumber(int end) {
    
            Random random = new Random();
    
            int ran = random.nextInt(end);
    
            int ranNext = -1;
    
            System.out.println(ran);
    
            Scanner sc = new Scanner(System.in);
    
            System.out.println("请用户输入一个0-" + end + "之间的数字:\n您一共有5次机会,当前级别"+level+"级");
    
            for (int i = 5; i > 0; i--) {
    
                int num = sc.nextInt();
    
                if(ranNext >= 0){
    
                    ran = ranNext;
    
                }
    
                if (num > end || num < 0) {
    
                    System.out.println("您输入的数字超出范围,请重新输入:");
    
                    num = sc.nextInt();
    
                } else if (num == ran) {
    
                    System.out.println("恭喜你,猜对了!\n接着下一局请输入yes,输入其他则退出");
    
                    String judge = sc.next();
    
                    if(judge.equals("yes")){
                        //进入下局升级提升难度
                         level++;
                       //如果不考虑性能,可以采用递归调用方式优化代码
                        guessNumber(end*level);
                        //此处break为了采用递归的方式时及时从方法栈中退出,
                        break;
                    }else{
    
                        break;
    
                    }
    
                } else if (num != ran) {
    
                    if (i == 1){
    
                        System.out.println("对不起,你的机会用完了,再玩一次请输入yes,输入其他则退出");
    
                        String judge = sc.next();
    
                        if(judge.equals("yes")){
    
                           //重新开始级别复位成1级
                            level=1;
                            guessNumber(10);
                            //此处break为了采用递归的方式时及时从方法栈中退出,
                            break;
                        }else{
                            break;
    
                        }
    
                    }else {
                        System.out.println("对不起,你猜错了!还剩" + (i - 1) +"次机会");
    
                    }
    
                }
    
            }
    
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月19日
  • 已采纳回答 1月15日
  • 创建了问题 1月15日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度