如何调试我的随机数猜测程序?

时间:2017-09-28 06:51:16

标签: java random

我需要我的程序在我选择的两个数字(最小和最大)之间选择一个数字,然后我有5次尝试找出他想到的数字。但问题是计算机并没有真正解释限制权 - 挑选的数字有时超出极端。 min=3 max=6 - 为什么我得到的正确数字为7

代码在这里:

import java.util.*;

public class Game1 {
         public static void main(String[] args) {
         Scanner sc = new Scanner(System.in); 

    int min = sc.nextInt();

    int max = sc.nextInt();

    System.out.println("insert a number");

        int rand = min + (int)(Math.random() * ((max - min) + 1));

        for (int i = 0; i <=5; i++){

        int number = sc.nextInt();

            if (number == rand){

                System.out.println("congratulations! :D");
                break;
            }

            else if (i < number){

            System.out.println("The number is too big");

            }

            else if (i > number){

            System.out.println("the number is too small");

            }

            else{

            System.out.println("Try again");

            }               

            }

        }

 }

1 个答案:

答案 0 :(得分:1)

问题出在你的if语句中,用于检查用户的答案。您需要将用户的输入number与随机数rand进行比较。相反,您将循环计数器i与输入进行比较。

另一个问题是,您的for循环执行了6次迭代,而不是5次。要解决此问题,请将i <= 5更改为i < 5。这是因为i从0开始,而不是1。

最后,要显示再次尝试消息,请将其移至for循环之外。然后将break更改为return,以便在答案正确时不显示。以下是所有修复内容:

for (int i = 0; i < 5; i++) {
    int number = sc.nextInt();

    if (number == rand) {
        System.out.println("congratulations! :D");
        return;
    } else if (rand < number) {
        System.out.println("The number is too big");
    } else if (rand > number) {
        System.out.println("the number is too small");
    }
}

System.out.println("Try again");

你的随机生成很好 - 似乎遵循this帖子。