猜猜游戏程序。用户想到数字,计算机试图猜测它

时间:2014-09-21 20:33:04

标签: java

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

public class GuessHarder {

public static void main(String[] args) {


    Random generator = new Random();
    Scanner reader = new Scanner(System.in);

    String higher = "higher", lower = "lower", correct = "correct", input;
    int guess, random, random2 = 1, random3 = 100, randomLast, cntr = 1;

    random = generator.nextInt(100) + 1;
    randomLast = random;
    System.out.println("Is your number: " + random);
    System.out.println("Input if number should be higher, lower, or correct: ");
    input = reader.next();

    while (!input.equals("correct")){
        if (input.equals("lower")){
            randomLast = random2;
            random2 = generator.nextInt(100) + 1;
            if ((random2 < random) && (random2 < randomLast)){
            random = random2;
            cntr += 1;
            System.out.println("Is your number: " + random);
            System.out.println("Input if number should be higher, lower, or correct: ");
            input = reader.next();
            } else {
                input = lower;
            }
        } else if (input.equals("higher")){
            randomLast = random3;
            random3 = generator.nextInt(100) + 1;
            if ((random3 > random) && (random3 > randomLast)){
            random = random3;
            cntr += 1;
            System.out.println("Is your number: " + random);
            System.out.println("Input if number should be higher, lower, or correct: ");
            input = reader.next();
            } else {
                input = higher;
            }
        }

    }

    System.out.println("Computer took " + cntr + " amount of tries to guess your number");

    }
}

当我输入更高或更低时,它将分别给出比前一个更高或更低的数字,但它不会记住以前的数字。 为清楚起见,一个例子是:

“你的电话号码是:65

如果数字应该更高,更低或更正,请输入:

更高

你的电话号码是:96

如果数字应该更高,更低或更正,请输入:

你的电话号码是:59

如果数字应该更高,更低或更正,请输入:“

最后一次输入的范围应该是65-96,但它只是0-96所以我得到59这样的数字不应该在范围内。 我应该更改什么来设置它以记住范围的最后两个输入而不是最后一个。

2 个答案:

答案 0 :(得分:3)

因此请保留两个变量&#34;记住&#34;下限和上限。

int lowerBound = 0;
int upperBound = MAX_NUMBER;

然后每当计算机猜测时,您需要更新这两个数字。

更新这两个数字后,您需要根据这些数字生成新的猜测。

generator.nextInt(upperBound - lowerBound + 1) + lowerBound;

+1使值包含在内。

答案 1 :(得分:1)

您必须记住下限和上限,并尝试在它们之间创建一个随机数而不是

generator.nextInt(100) + 1;