为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

婷婷同学_ 2022-01-12 16:49:41
我正在尝试从我创建的 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”,但我不确定我应该组合打印什么。
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

只需打印solution[i]而不是i

System.out.println(solution[i]);


查看完整回答
反对 回复 2022-01-12
?
皈依舞

TA贡献1851条经验 获得超3个赞

只需更换

System.out.println(i);

System.out.println(solution[i]);


查看完整回答
反对 回复 2022-01-12
?
慕仙森

TA贡献1827条经验 获得超7个赞

您有一个问题,您的算法可能会多次返回相同的颜色(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))

    .limit(5)

    .mapToObj(i -> colors[i])

    .forEach(System.out::println);

这会生成一个包含 5 个随机整数的流,并通过访问数组来打印元素。


查看完整回答
反对 回复 2022-01-12
  • 3 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信