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/