[英]How to pick a random char and double from list and output them in a string paired together
我是Java的新手,我的家庭作业的一部分要求我产生一个随机的字符串,该字符串包含16对笔记和持续时间。
我查看了一些示例,并尝试筛选了班上提供的材料,但是我发现的结果不是针对另一种编程语言,就是只选择了列表中的一个随机项。
我将注释和持续时间定义为:
static char[] validNotes = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
static double[] validDuration = {0.25, 0.5, 1, 2, 4};
预期的字符串输出将是随机的,但是一个示例将是:
[A(2), G(3), B(0.5), C(1), C(1), D(0.25), …]
这样的事情应该可以解决问题。
static char[] validNotes = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
static double[] validDuration = {0.25, 0.5, 1, 2, 4};
static Random random = new Random();
static String getRandomPair() {
char note = validNotes[random.nextInt(validNotes.length)];
double duration = validDuration[random.nextInt(validDuration.length)];
return note+"("+duration+")";
}
与此类似的方法将起作用-只需使用随机数作为数组的位置值即可。
Random r = new Random();
int randomNote = r.nextInt(validNotes.length);
int randomNumber = r.nextInt(validDuration.length);
System.out.println(validNotes[randomNote] + "(" + validDuration[randomNumber] + ")");
这将为您提供一对数字字母,因此,如果您想获得16个数字,则需要对其进行循环。
Shmosel的评论对我来说似乎很好:
List<String> pairs = new ArrayList<>();
for (char note : validNotes)
for (double duration : validDuration)
pairs.add(note + "(" + duration + ")");
Collections.shuffle(pairs);
System.out.println(pairs.subList(0, 16));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.