我正在创建一个提取3个随机数的小程序,唯一的条件是所有三个数字必须彼此不同,例如:3,9,3是不可接受的。
这是我的代码,我试了好几次,偶尔出现的数字彼此相等。
我的代码有什么问题?
public class Premi {
public static void main(String[] args) {
int num = (int) (Math.random() *10) + 1;
int num2 = (int) (Math.random() *10) + 1;
int num3 = (int) (Math.random() *10) + 1;
boolean first = true;
boolean second = true;
boolean third = true;
while(first) {
if (num!=num2) {
first=false;
} else if (num==num2) {
num = (int) (Math.random() *10) + 1;
}
}
while(second) {
if (num!=num3) {
second=false;
} else if (num==num3) {
num = (int) (Math.random() *10) + 1;
}
}
while(third) {
if (num2!=num3) {
third=false;
} else if (num2==num3) {
num2 = (int) (Math.random() *10) + 1;
}
}
System.out.println(num + "," + num2 + "," + num3);
}
}
谢谢。
答案 0 :(得分:1)
Set<Integer> numbers = new HashSet<>();
while (numbers.size() < 3)
numbers.add(((int) (Math.random() *10) + 1));
在此使用Set
可确保数字不会重复。
如果您不允许使用任何馆藏或阵列(我保留我对禁止学生使用有效技术的课程的看法),您可以使用:
int n1 = (int) (Math.random() * 10) + 1;
int n2;
do {
n2 = (int) (Math.random() * 10) + 1;
} while (n2 == n1);
int n3;
do {
n3 = (int) (Math.random() * 10) + 1;
} while (n3 == n2 || n3 == n1);
do
循环保证至少运行一次。