繁体   English   中英

如何从列表中选择一个随机字符并加倍并以成对的字符串输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM