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

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 個數字字母對,則需要循環它。

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));
添加回答
舉報