Java—简单的猜数游戏(1~1000)

本文详细介绍了如何使用Java编写一个包含20次机会的猜数游戏,涉及循环、判断逻辑以及随机数生成。通过逐步展示代码和分析,作者展示了基础编程技巧的实践应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我课后的一个作业        

在学习Java之前,我已经写过C语言的猜数游戏,所以开始写代码之前已经有了一定的思路

1.起始代码

        在最开始我们先定义两个inputrandom对象,便于后续对变量赋值。然后让程序帮我们生成一个随机数赋值给i。最后定义一个布尔类型,便于后续进行判断。

        在这里我多加了一个细节,就是用户最多猜的次数,为20次。

public class Guessnumber {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Random random = new Random();
        int i = random.nextInt(1000) + 1;  //  因为要求数的范围时1~1000,所以需要在随机生成的数的范围上+1
        int j = 20;
        int p = 20;
        boolean flag = false;
        System.out.println("机器人已生成一个1~1000的随机数");
        System.out.println("请您输入一个整数,猜出这个随机数:");

2.判断代码

        在while循环体内,我们让用户输入一个数。然后用if-else嵌套判断,这个数是大了还是小了,还是正好相等。

1.数小了
  • 当用户输入的数小于程序随机生成的数时,让总共能猜的次数自减1
  • 当次数<=5时,打印一句有意思的提示语句
  • 当次数=0时,跟用户说出正确答案,游戏结束,同时把true赋值给flag
            if (b < i) {
                j--;
                System.out.println("您猜的数小了,您还剩下" + j + "次机会了哦~");
                if (j <= 5) {
                    System.out.println("哥们醒醒,再这样下去没机会了!猜的这么小,难道有什么难言之隐吗?请注意:你只剩下" + j + "次机会了");
                }
                if (j == 0) {
                    System.out.println("不好意思了朋友,你还是猜的小了,正确答案是" + i + ",你已经没机会继续了,请重新开始这场游戏吧");
                    flag = true;
                }
            } 
2.数大了
  • 当用户输入的数大于程序随机生成的数时,让总共能猜的次数自减1
  • 当次数<=5时,打印一句有意思的提示语句
  • 当次数=0时,跟用户说出正确答案,游戏结束,同时把true赋值给flag
​
        if (b > i) {
                j--;
                System.out.println("您猜的数大了,您还剩下" + j + "次机会了哦~");
                if (j <= 5) {
                    System.out.println("哥们醒醒,再这样下去没机会了!不是,你猜的这么大,难道是不会猜小一点的数吗?请注意:你只剩下" + j + "次机会了");
                }
                if (j == 0) {
                    System.out.println("不好意思了朋友,你还是猜的大了,正确答案是" + i + ",你已经没机会继续了,请重新开始这场游戏吧");
                    System.out.println("你说你猜这么大干嘛,不会是故意的吧");
                    flag = true;
                }
            }

​
 3.数相等
  • 当用户输入的数等于程序随机生成的数时,那么就判断j多大,并分别打印有意思的话。并告诉用户正确答案的值,同时最后将true赋值给flag
  • 还要注意一个细节,告诉用户一共用了几次机会才把这个数才出来
  • 但是会发现如果直接用p-j的话,次数会少一次,最后猜的那次。所以我们要再+1。
​
             if (j >= 18) {
                    System.out.println("正确答案就是" + i + "!恭喜您!您太棒啦!只用了" + (p - j + 1) + "次就猜对了!");
                    flag = true;
                } else if (j >= 12) {
                    System.out.println("正确答案就是" + i + "!还不错哦,您只用了" + (p - j + 1) + "次就猜对了!");
                    flag = true;
                } else if (j >= 6) {
                    System.out.println("没错,正确答案是" + i + ",但是运气可能不太好哦,用了" + (p - j + 1) + "次才猜出来,下次加油吧");
                    flag = true;
                } else if (j >= 3) {
                    System.out.println("好好好,正确答案确实是" + i + ",但是你小子不会在瞎猜吧,居然用了" + (p - j + 1) + "次才猜对0.0,下次不许这样了!");
                    flag = true;
                } else if (j == 0) {
                    System.out.println("呼~你小子,我还以为你猜不出来了,幸好最后一次机会你把握住了,猜出来了" + i);
                    flag = true;
                }

​

3.完整代码

        为什么在上述有些判断语句中要把true赋值给flag,那是因为while循环的条件是flag不等于true。所以当游戏结束之后,要将flag的值变成true,不然就会变成死循环,循环不能停止。

import java.util.*;

public class Guessnumber {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Random random = new Random();
        int i = random.nextInt(1000) + 1;  //  因为要求数的范围时1~1000,所以需要在随机生成的数的范围上+1
        int j = 20;
        int p = 20;
        boolean flag = false;
        System.out.println("机器人已生成一个1~1000的随机数");
        System.out.println("请您输入一个整数,猜出这个随机数:");
        while (flag != true) {
            int b = input.nextInt();
            if (b < i) {
                j--;
                System.out.println("您猜的数小了,您还剩下" + j + "次机会了哦~");
                if (j <= 5) {
                    System.out.println("哥们醒醒,再这样下去没机会了!猜的这么小,难道有什么难言之隐吗?请注意:你只剩下" + j + "次机会了");
                }
                if (j == 0) {
                    System.out.println("不好意思了朋友,你还是猜的小了,正确答案是" + i + ",你已经没机会继续了,请重新开始这场游戏吧");
                    flag = true;
                }
            } else if (b > i) {
                j--;
                System.out.println("您猜的数大了,您还剩下" + j + "次机会了哦~");
                if (j <= 5) {
                    System.out.println("哥们醒醒,再这样下去没机会了!不是,你猜的这么大,难道是不会猜小一点的数吗?请注意:你只剩下" + j + "次机会了");
                }
                if (j == 0) {
                    System.out.println("不好意思了朋友,你还是猜的大了,正确答案是" + i + ",你已经没机会继续了,请重新开始这场游戏吧");
                    System.out.println("你说你猜这么大干嘛,不会是故意的吧");
                    flag = true;
                }
            } else {
                if (j >= 18) {
                    System.out.println("正确答案就是" + i + "!恭喜您!您太棒啦!只用了" + (p - j + 1) + "次就猜对了!");
                    flag = true;
                } else if (j >= 12) {
                    System.out.println("正确答案就是" + i + "!还不错哦,您只用了" + (p - j + 1) + "次就猜对了!");
                    flag = true;
                } else if (j >= 6) {
                    System.out.println("没错,正确答案是" + i + ",但是运气可能不太好哦,用了" + (p - j + 1) + "次才猜出来,下次加油吧");
                    flag = true;
                } else if (j >= 3) {
                    System.out.println("好好好,正确答案确实是" + i + ",但是你小子不会在瞎猜吧,居然用了" + (p - j + 1) + "次才猜对0.0,下次不许这样了!");
                    flag = true;
                } else if (j == 0) {
                    System.out.println("呼~你小子,我还以为你猜不出来了,幸好最后一次机会你把握住了,猜出来了" + i);
                    flag = true;
                }
            }
        }
    }

}

4.分析

        猜数游戏是一个很基础的循环结构,判断结构的运用,难度也不大,在自己写的代码中可以增加很多细节,让这个游戏变得更加有趣。

至此,本篇文章完毕,谢谢各位观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MKProgrammer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值