java - 猜谜游戏程序。用户想到数字,计算机尝试猜测它

标签 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 这样的数字,不应该在这个范围内。 我应该更改什么才能将其设置为记住范围的最后两个输入而不是仅记住最后一个。

最佳答案

因此保留两个“记住”下限和上限的变量。

int lowerBound = 0;
int upperBound = MAX_NUMBER;

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

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

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

+1 使该值包含在内。

关于java - 猜谜游戏程序。用户想到数字,计算机尝试猜测它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963564/

相关文章:

java - 如何以编程方式在 Java Web 应用程序中执行未编译的 testNg 测试用例?

java - 如何根据条件查找数组中数字的索引位置?

java - 在 Android UI 中旋转和显示图像的最有效方法是什么?

java - 我们可以在soapui中使用apache poi jar吗?

java - 使用 Spring Boot 从不存在的地址发送邮件失败 : Requires password?

java - 在二维图中表示字符串

java - 创建自定义搜索栏

java - 概念继承实现

java - Android ArrayAdapter不更新ListView

java - 如何使用输入文件中的文本填充 ArrayList?