我试着模拟一个强力球号码拾取程序。我可以得到范围内的随机数,但如何使它随机5次?只看for循环5次打印结果,但不会再随机循环一次。这是代码
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class lottery {
public static void main(String[] args) {
List<Integer> whiteBalls = new ArrayList<>();
Random rand = new Random();
Random randi = new Random();
//non duplicate numbers 1-69
for(int i=0; i<5; i++){
while(true){
int whiteBall = rand.nextInt(69)+1;
if(!whiteBalls.contains(whiteBall)){
whiteBalls.add(whiteBall);
break;
}
}
}
int redBall = randi.nextInt(26)+1; //special 1-26
for(int i=0; i<5; i++){
System.out.println(whiteBalls + " " + redBall);
}
}
}发布于 2022-05-05 18:17:05
你正在打印你的结果在最后5次。而不是对列表中的每个元素执行一次。ArrayList有一个内置的toString()方法,可以让您打印它。但是,要解决您的问题,您需要运行相同的代码5次,而不是每次打印列表5次--它仍然与上次相同,并且没有用5个新值重新生成。您可以简化此任务,方法是将代码包装在函数中,然后通过for循环调用该函数5次。看看我贴在下面的代码,看看这是不是你想要的。
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class lottery {
public static void main(String[] args) {
Random randi = new Random();
for(int i = 0; i < 5; i++)
{
int redBall = randi.nextInt(26)+1; //special 1-26
System.out.println("Whiteball: " + generateWhiteBalls());
System.out.println("Redball: " + redBall);
}
}
public static List<Integer> generateWhiteBalls()
{
List<Integer> whiteBalls = new ArrayList<>();
Random rand = new Random();
//non duplicate numbers 1-69
for(int i=0; i<5; i++){
while(true){
int whiteBall = rand.nextInt(69)+1;
if(!whiteBalls.contains(whiteBall)){
whiteBalls.add(whiteBall);
break;
}
}
}
return whiteBalls;
}
}https://stackoverflow.com/questions/72131664
复制相似问题