我有一个作业要编写一个返回 1 到 54 之间的随机数的方法,不包括参数中传递的数字。方法头指定如下:
public static int getRandom(int... numbers)
我不能使用比一维数组更高级的东西。
我的代码是:
public class PE13RandomNumberChooserVer2 {
public static void main(String[] args) {
int[] excludeNumbers = {1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18};
int randomNumber = getRandom(excludeNumbers);
System.out.println();
System.out.println("Random number chosen: " + randomNumber);
}
public static int getRandom(int... excludeNumbers) {
int random = 1 + (int)(Math.random() * (54 - 1) + 1);
System.out.println("Numbers to exclude: ");
for (int i = 0; i < excludeNumbers.length; i++) {
System.out.print(excludeNumbers[i] + " ");
while (excludeNumbers[i] == random) {
random = 1 + (int)(Math.random() * 54);
System.out.println("\n(for test only) next random number: " + random);
}
}
return random;
}
}
示例运行表明我的逻辑是错误的:
(for test only) initial random number: 8
Numbers to exclude:
1 2 3 4 5 6 7 8
(for test only) next random number: 12
11 12
(for test only) next random number: 3
13 14 15 16 17 18
Random number chosen: 3
它仅检查 random 是否等于数组中的当前项目,它不考虑它可以等于列表中已检查的前一个项目的情况。
随机生成的数字的最终结果应该是与数组中的数字不同的值。非常感谢任何如何解决它的建议。