我需要我的程序在我选择的两个数字(最小和最大)之间选择一个数字,然后我有5次尝试找出他想到的数字。但问题是计算机并没有真正解释限制权 - 挑选的数字有时超出极端。 min=3
max=6
- 为什么我得到的正确数字为7
?
代码在这里:
import java.util.*;
public class Game1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int min = sc.nextInt();
int max = sc.nextInt();
System.out.println("insert a number");
int rand = min + (int)(Math.random() * ((max - min) + 1));
for (int i = 0; i <=5; i++){
int number = sc.nextInt();
if (number == rand){
System.out.println("congratulations! :D");
break;
}
else if (i < number){
System.out.println("The number is too big");
}
else if (i > number){
System.out.println("the number is too small");
}
else{
System.out.println("Try again");
}
}
}
}
答案 0 :(得分:1)
问题出在你的if语句中,用于检查用户的答案。您需要将用户的输入number
与随机数rand
进行比较。相反,您将循环计数器i
与输入进行比较。
另一个问题是,您的for
循环执行了6次迭代,而不是5次。要解决此问题,请将i <= 5
更改为i < 5
。这是因为i
从0开始,而不是1。
最后,要显示再次尝试消息,请将其移至for
循环之外。然后将break
更改为return
,以便在答案正确时不显示。以下是所有修复内容:
for (int i = 0; i < 5; i++) {
int number = sc.nextInt();
if (number == rand) {
System.out.println("congratulations! :D");
return;
} else if (rand < number) {
System.out.println("The number is too big");
} else if (rand > number) {
System.out.println("the number is too small");
}
}
System.out.println("Try again");
你的随机生成很好 - 似乎遵循this帖子。