我正在尝试制作一个简单的猜谜游戏,其中计算机应该猜出我在0到100之间选择的数字。尝试运行它,如果数字太小则按1,如果数字太高则按2。
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
最佳答案
这就是您需要的:
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