0238-六六 2023-12-23 13:52 采纳率: 100%
浏览 7
已结题

请各位找找这个猜数字小游戏的错误

各位大佬帮帮忙,整了半天也不知道哪里出错了

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

public class Demo8 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        Random random=new Random();
        int number = random.nextInt(100);
        int num=0;
        int count=0;
        System.out.println("生成随机数:"+number);
        boolean flag=false;
        do {
            System.out.println("请输入猜测数字:");
            number = random.nextInt();
            num = input.nextInt();
            if (num < number) {
                System.out.println("猜小了,大一些");
            } else if (num > number) {
                System.out.println("猜大了,小一些");
            } else {
                flag=true;
            }
    `` }while (!flag);
        System.out.println("猜测次数:"+count);
        count= input.nextInt();
        if (count>=1&&count<=5) {
            System.out.println("太厉害了!天才啊!");
        } else if (count>=6&&count<=10) {
            System.out.println("很牛啊,高手!");
        } else if (count>=11 &&count<=16) {
            System.out.println("还不错啊!");
        }else if(count>16){
            System.out.println("笨!这么慢");
        }
    }
}
运行结果如下:
生成随机数:13
请输入猜测数字:
45
猜小了,大一些
请输入猜测数字:
46
猜小了,大一些
请输入猜测数字:
78
猜小了,大一些
请输入猜测数字:
12
猜小了,大一些
请输入猜测数字:
13
猜大了,小一些
请输入猜测数字:


  • 写回答

2条回答 默认 最新

  • a5156520 2023-12-23 14:01
    关注

    如果要猜的随机数只产生一次,那么第17行可以去掉,然后在do-while循环中让count进行计数即可。

    修改如下:

    
    
    import java.util.Random;
    import java.util.Scanner;
     
    public class Demo8 {
        public static void main(String[] args) {
            
            Scanner input=new Scanner(System.in);
            Random random=new Random();
            int number = random.nextInt(100);
            int num=0;
            int count=0;
            //System.out.println("生成随机数:"+number);
            boolean flag=false;
            do {
                System.out.println("请输入猜测数字:");
              //  number = random.nextInt(); //  因为前面已经产生了要猜的数,所以这里不需要再产生随机数,否则要猜的数每循环一次,就会再产生一次
                num = input.nextInt();
                count++;   // 猜数之后,猜数次数+1
                if (num < number) {
                    System.out.println("猜小了,大一些");
                } else if (num > number) {
                    System.out.println("猜大了,小一些");
                } else {
                    flag=true;
                }
         }while (!flag);
            System.out.println("猜测次数:"+count);
            //count= input.nextInt();  // count的值是通过记录猜数的次数而产生,不是通过获取输入来获得,所以这里这行可以去掉
            if (count>=1&&count<=5) {
                System.out.println("太厉害了!天才啊!");
            } else if (count>=6&&count<=10) {
                System.out.println("很牛啊,高手!");
            } else if (count>=11 &&count<=16) {
                System.out.println("还不错啊!");
            }else if(count>16){
                System.out.println("笨!这么慢");
            }
        }
    }
    
     
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 创建了问题 12月23日

悬赏问题

  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题