猜猜游戏 - 如何记住猜测范围

时间:2014-10-18 11:31:46

标签: java

我正在尝试制作一个简单的猜谜游戏,计算机应该猜测我在0到100之间选择的数字。尝试运行它,如果数字太低则按1,如果数字太高则按2。 / p>

1.如果我选择50并且计算机猜测41,我按1是因为数字太低

2.然后计算机猜测41到100之间,比如70,我按2因为它太高了

3.现在的问题是,接下来计算机应该在70到41之间猜测(之前猜到的数字),但它猜测在71和0之间,所以它在极端之间一直在上下跳动

4.我不知道如何让它记住范围即。以前猜过的数字

System.out.print("Enter a number: ");
Scanner input = new Scanner(System.in);
int num=input.nextInt();
int ans=0;

Random rand = new Random();
int guess=rand.nextInt(100);

while(guess!=num) {
    System.out.print("Is it " + guess + " ? ");
    ans=input.nextInt();
    if (ans==1) {
        guess=rand.nextInt(100-guess+1)+guess;
    }
    else if (ans==2) {
        guess=rand.nextInt(100-guess+1)+0;
    }
}
System.out.print("Computer guessed: " + guess);
  

输出如下所示:

     

输入一个数字:50

     

是55吗? 2

     

是26吗? 1

     

是35吗? 1

     

是44吗? 1

     

是54吗? 2

     

是31吗? 1

     

是39吗? 1

     

是87吗? 2

     

是0吗? 1

     

是11吗? 1

     

是97吗? 2

3 个答案:

答案 0 :(得分:2)

您应该使用2个变量:一个用于上限,一个用于下限。

while(guess!=num) {
    System.out.print("Is it " + guess + " ? ");
    ans=input.nextInt();
    if (ans==1) {
        lowerLimit = guess; // Your new lower limit .
        guess=lowerLimit+ (upperLimit- lowerLimit) * r.nextInt();
    }
    else if (ans==2) {
        upperLimit = guess; // Your new upper limit.
        guess=lowerLimit+ (upperLimit- lowerLimit) * r.nextInt();
    }
}

答案 1 :(得分:0)

您需要两个变量。一个用于下限,一个用于上限。

答案 2 :(得分:0)

这就是你需要的:

    System.out.print("Enter a number: ");
    Scanner input = new Scanner(System.in);
    int num = input.nextInt();
    int ans = 0;

    Random rand = new Random();
    int min = 0;
    int max = 100;
    int guess = rand.nextInt(max);

    while (guess != num) {
        System.out.print("Is it " + guess + " ? ");
        ans = input.nextInt();
        if (ans == 1) {
            min = guess + 1;
        } else if (ans == 2) {
            max = guess;
        }


        guess = rand.nextInt(max - min) + min;

    }
    System.out.print("Computer guessed: " + guess);

示例输出:

Enter a number: 50
Is it 62 ? 2
Is it 39 ? 1
Is it 41 ? 1
Is it 56 ? 2
Is it 54 ? 2
Is it 49 ? 1
Is it 52 ? 2
Computer guessed: 50