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

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

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

泛舟湖上清波郎朗 2023-07-28 10:37:50
我对 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), …]
查看完整描述

3 回答

?
湖上湖

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

像这样的事情应该可以解决问题;


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+")";

}


查看完整回答
反对 回复 2023-07-28
?
富国沪深

TA贡献1790条经验 获得超9个赞

与此类似的东西可以工作 - 只需使用随机数作为数组的位置值。


Random r = new Random();


        int randomNote = r.nextInt(validNotes.length);

        int randomNumber = r.nextInt(validDuration.length);


        System.out.println(validNotes[randomNote] + "(" + validDuration[randomNumber] + ")");

这将为您提供一对数字字母,因此如果您想获得 16 个数字字母对,则需要循环它。


查看完整回答
反对 回复 2023-07-28
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

    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));


查看完整回答
反对 回复 2023-07-28
  • 3 回答
  • 0 关注
  • 93 浏览

添加回答

举报

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