首先,我的代碼(這是遠遠不夠完善,我真的不知道我在做什麼)是這樣的:如何使用另一個枚舉選擇特定的enum.ordinal()?
public enum Chord { MAJOR, MINOR, DIMINISHED, BASS, BASS2 }
public enum Scales { C, D, E, F, G, A }
public class EnumTest
{
Chord chord;
public EnumTest(Chord chord)
{
this.chord = chord;
}
public void tellItLikeItIs()
{
switch (chord) {
case MAJOR:
for(Scales C : Scales.values())
System.out.println(C + " " + C.ordinal());
break;
//I've tried in the CHORD enum going MAJOR(0, 2, 4) but I don't think that was correct
case MINOR: System.out.println("C, Eb, G");
break;
default:
System.out.println("I screwed up");
break;
}
}
public static void main(String[] args)
{
EnumTest firstDay = new EnumTest(Chord.MAJOR);
firstDay.tellItLikeItIs();
EnumTest thirdDay = new EnumTest(Chord.MINOR);
thirdDay.tellItLikeItIs();
System.out.println("Here are all Scale degrees" +
" and their ordinal values: ");
for(Scales C : Scales.values())
System.out.println(C + " " + C.ordinal());
}
}
我可能會丟失一些支架和事情,我無法使用代碼工具發佈一些內容。我的問題是,對於MAJOR的情況,我可以讓編譯器打印C 0,D 1,E 2等,除了我只希望它打印C,E和G(0,2,4)。有沒有辦法只選擇這3個主要和絃的序數值並打印這些值?我還需要銳器(C,C#,D,D#..),除了銳器是'非法字符',我得到_MusicChord\Scales.java:2: illegal character: \35
我試圖查看轉義字符,但我或者不知道不理解我閱讀的文章,或者我看錯了東西。有人可以告訴我如何將#添加到Scales類中,而不是非法字符?任何幫助表示讚賞
我的原因嘗試使用序號是因爲最終我想將其插入GUI並讓用戶選擇一個音符(A,B,C ..等等..),然後從C標度中偏移該值(例如:C(0)= C(0)E(2)G(4),而D僅僅是C整個偏移1(如果這對所有人都有意義) )我能想到的唯一合理的方式(以及我建議的一種方法)是嘗試使用序號 – cutrightjm