如何从列表中选择随机 char 和 double 并将它们输出到配对在一起的字符串中

我对 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), …]


泛舟湖上清波郎朗
浏览 94回答 3
3回答

湖上湖

像这样的事情应该可以解决问题;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 个数字字母对,则需要循环它。

胡说叔叔

    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));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java