首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何迭代数组五次,但不是相同的数字?

如何迭代数组五次,但不是相同的数字?
EN

Stack Overflow用户
提问于 2022-05-05 17:56:04
回答 1查看 38关注 0票数 0

我试着模拟一个强力球号码拾取程序。我可以得到范围内的随机数,但如何使它随机5次?只看for循环5次打印结果,但不会再随机循环一次。这是代码

代码语言:javascript
复制
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);
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-05-05 18:17:05

你正在打印你的结果在最后5次。而不是对列表中的每个元素执行一次。ArrayList有一个内置的toString()方法,可以让您打印它。但是,要解决您的问题,您需要运行相同的代码5次,而不是每次打印列表5次--它仍然与上次相同,并且没有用5个新值重新生成。您可以简化此任务,方法是将代码包装在函数中,然后通过for循环调用该函数5次。看看我贴在下面的代码,看看这是不是你想要的。

代码语言:javascript
复制
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;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72131664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档