如何从一组颜色中打印 5 种随机颜色

我正在尝试从我创建的 10 种颜色的数组中打印 5 种随机颜色(颜色可以重复,只要它们是随机的)。我知道我很接近,但我不确定我哪里出错了。


import java.util.Random;


public class RandomColors

{

   public static void main (String[] args)

   {

    Random r = new Random();


    String[] colors = {"red","green","blue","yellow","brown","black","white","indigo","orange","purple"};

    String[] solution = new String[5];


    for(int i = 0; i < solution.length; i++)

    {

     solution[i] = colors[r.nextInt(10)];

     System.out.println(i);

    }


   }

}

我知道我的问题是我正在尝试打印“i”,但我不确定我应该组合打印什么。


婷婷同学_
浏览 164回答 3
3回答

DIEA

只需打印solution[i]而不是i:System.out.println(solution[i]);

皈依舞

只需更换System.out.println(i);和System.out.println(solution[i]);

慕仙森

您有一个问题,您的算法可能会多次返回相同的颜色(r.nextInt(10)可以多次返回相同的值)。更直接的解决方案可能是将数组转换为列表,将其打乱(这是“随机”部分),然后打印前 5 个元素:List<String> colorsList = Arrays.asList(colors);Collections.shuffle(colorsList);colorsList.stream().limit(5).forEach(System.out::println);由于问题被编辑为允许使用非唯一颜色,因此可以像这样打印它们:IntStream.generate(() -> r.nextInt(colors.length))&nbsp; &nbsp; .limit(5)&nbsp; &nbsp; .mapToObj(i -> colors[i])&nbsp; &nbsp; .forEach(System.out::println);这会生成一个包含 5 个随机整数的流,并通过访问数组来打印元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java