我正在尝试从我创建的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”,但是我不确定应该合并什么来进行打印。
答案 0 :(得分:5)
您有一个问题,就是算法可能多次返回相同的颜色(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个随机整数的流,并通过访问数组来打印元素。
答案 1 :(得分:2)
仅打印//
// dummyControl1
//
...
this.dummyControl1.MyCollection.Add(collectionItem1);
this.dummyControl1.MyCollection.Add(collectionItem2);
this.dummyControl1.MyCollection.Add(collectionItem3);
this.dummyControl1.MyCollection.MyString = "Hello";
...
而不是solution[i]
:
i
答案 2 :(得分:1)
只需替换
System.out.println(i);
与
System.out.println(solution [i]);