Java基础练习--猜数字游戏

new Random().nextInt(100)
随机生成一个数字[0,100)
@Test
    public void test6(){
       int random = new Random().nextInt(100) + 1;
         System.out.println("本轮要猜的数字是" +random);
        for ( ; ;) {
            System.out.println("猜吧");
            Scanner scanner = new Scanner(System.in);
            int guessNum = scanner.nextInt();
            if(guessNum > random){
                System.out.println("太大了");
            }else if(guessNum < random){
                System.out.println("太小了");
            }else{
                System.out.println("恭喜你 答对了");
                break;
            }
        }
        System.out.println("程序结束");
    }

 

 

<think>好的,用户想要了解如何用Java实现一个1到100的猜数字游戏。首先,我需要明确这个游戏的基本逻辑。游戏通常包括生成一个随机数,然后让用户反复猜测,直到猜中为止,同时给出提示是猜大了还是猜小了。 首先,随机数的生成是关键。在Java中,可以使用Math类的random方法,不过这个方法生成的是0.0到1.0之间的double,所以需要转换成1到100的整数。可能需要用(int)(Math.random() * 100) + 1这样的表达式。不过,记得检查是否正确,比如当Math.random()返回接近1.0时,乘以100后是接近100的,加上1会不会变成101?不过实际上Math.random()是小于1的,所以乘以100后最大是99.999,转为int是99,加上1就是100,所以没问题。 接下来,用户输入的处理。Java中可以使用Scanner类,从System.in读取输入。需要处理可能的输入错误,比如用户输入的不是整数,这时候程序可能会抛出异常。但作为实习级别的代码,可能暂时不需要处理异常,或者简单提示用户输入有效数字。 然后,循环结构。游戏需要循环直到猜中,所以可能用while循环,条件是否猜中。每次循环中提示用户输入,比较输入的数字和随机数,给出提示。 结构方面,程序的大致流程可能是: 1. 生成随机数。 2. 提示用户输入猜测。 3. 读取输入。 4. 比较输入与随机数,给出提示。 5. 如果没猜中,回到步骤2。 6. 猜中后显示祝贺信息和猜测次数。 另外,可能需要统计用户猜测的次数,每次循环递增一个计数器。 现在考虑代码的结构。首先导入Scanner,生成随机数,初始化计数器,然后循环处理输入。需要注意关闭Scanner,虽然在某些情况下不关也不会出错,但良好的习惯应该关掉。不过如果在Java 7及以上使用try-with-resources可能更好,但可能用户还没学到这个部分,所以可能用传统的写法。 可能的代码示例: import java.util.Scanner; public class GuessNumber { public static void main(String[] args) { int target = (int)(Math.random() * 100) + 1; int count = 0; Scanner scanner = new Scanner(System.in); System.out.println("欢迎来到猜数字游戏!请输入1-100之间的整数:"); while (true) { int guess = scanner.nextInt(); count++; if (guess > target) { System.out.println("猜大了,再试试!"); } else if (guess < target) { System.out.println("猜小了,继续努力!"); } else { System.out.println("恭喜你,猜对了!总共猜了" + count + "次。"); break; } } scanner.close(); } } 但这里有个问题,如果用户输入的不是整数,比如输入字母,程序会抛出InputMismatchException,导致崩溃。所以可能需要处理这种情况,比如使用hasNextInt()检查输入是否为整数,如果不是,提示用户并跳过。但实习级别的代码可能不考虑异常处理,或者用户可能需要基础版本,所以可能需要说明这一点,或者给出处理异常的版本。 比如改进后的代码: 在循环中加入检查: while (true) { if (scanner.hasNextInt()) { int guess = scanner.nextInt(); count++; // 比较逻辑 } else { System.out.println("输入无效,请输入整数!"); scanner.next(); // 清除无效输入 } } 这样处理可以避免程序崩溃,并提示用户输入正确格式。 另外,可能需要考虑输入是否在1-100范围内,但题目没有特别说明,可能暂时不需要处理,或者可以添加提示。 总结步骤: 1. 生成1-100的随机数。 2. 创建Scanner读取输入。 3. 循环提示输入,直到猜中。 4. 每次比较并给出提示。 5. 统计次数,结束时显示。 可能的改进点包括输入验证、范围检查、异常处理,但基础版本可能不需要这些。用户可能需要先看到基本实现,再逐步完善。 最后,确保代码语法正确,比如类名、导入Scanner、正确的括号等。然后测试一下,比如输入不同的数字看提示是否正确,以及猜中后是否结束循环。</think>以下是用Java实现1-100猜数字游戏的详细步骤及代码: ### 实现思路 1. **生成随机数**:使用`Math.random()`生成1-100的整数 2. **读取用户输入**:通过`Scanner`类获取控制台输入 3. **循环判断逻辑**: - 比较输入值与目标值 - 提示"猜大/猜小" - 记录猜测次数 4. **异常处理**:防止非数字输入导致程序崩溃 ### 完整代码实现 ```java import java.util.Scanner; public class NumberGuessingGame { public static void main(String[] args) { // 生成目标数字 (1-100) int targetNumber = (int)(Math.random() * 100) + 1; int guessCount = 0; Scanner scanner = new Scanner(System.in); System.out.println("欢迎来到猜数字游戏!请输入1-100之间的整数:"); while(true) { // 输入验证 if(scanner.hasNextInt()) { int userGuess = scanner.nextInt(); guessCount++; // 判断猜测结果 if(userGuess < 1 || userGuess > 100) { System.out.println("请输入1-100之间的有效数字!"); } else if(userGuess > targetNumber) { System.out.println("猜大了,再小一点!"); } else if(userGuess < targetNumber) { System.out.println("猜小了,再大一点!"); } else { System.out.printf("恭喜!你在%d次尝试后猜中了数字%d!%n", guessCount, targetNumber); break; } } else { System.out.println("输入错误,请确保输入整数!"); scanner.next(); // 清除无效输入 } } scanner.close(); } } ``` ### 代码解析 1. **随机数生成**: ```java int targetNumber = (int)(Math.random() * 100) + 1; ``` - `Math.random()`生成0.0~1.0的double值 - 乘以100后得到0.0~99.999的范围 - 强制转换为int后得到0~99 - 加1后得到1~100 2. **输入验证机制**: ```java if(scanner.hasNextInt()) { ... } ``` - 确保输入的是有效整数 - 处理非数字输入时给出错误提示 3. **核心判断逻辑**: ```java userGuess > targetNumber // 猜大 userGuess < targetNumber // 猜小 userGuess == targetNumber // 猜中 ``` 4. **增强功能**: - 输入范围验证(1-100) - 猜测次数统计 - 友好的提示信息 ### 运行示例 ``` 欢迎来到猜数字游戏!请输入1-100之间的整数: 50 猜小了,再大一点! 75 猜大了,再小一点! 63 猜小了,再大一点! 69 恭喜!你在4次尝试后猜中了数字69! ``` ### 扩展建议 1. 添加难度选择(不同数字范围) 2. 限制最大猜测次数 3. 记录最佳成绩 4. 添加图形界面(JavaFX/Swing) 这个实现包含了基本的游戏逻辑和必要的异常处理,适合作为Java入门练习项目。可以通过添加更多功能来提升项目的复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值