首先,我的代码(它远非完美,我真的不知道我在做什么)是这样的:
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());
}
}
我可能遗漏了一些括号和东西,我无法使用代码工具发布其中的一些内容。我的问题是,对于主要情况,我可以让编译器打印 C 0、D 1、E 2 等。除了我只希望它打印 C、E 和 G(0、2、4)。有没有办法只为大和弦选择这 3 个序数值并打印出来?
此外,在 Scales 枚举中,我还需要锐器(C、C#、D、D#..),除了锐器是“非法字符”,_MusicChord\Scales.java:2: illegal character: \35
我试图查看转义字符,但我要么不理解这篇文章我读了或者我看错了东西。有人还可以告诉我如何将#'s 添加到 Scales 类中而不会使它们成为非法字符吗?任何帮助表示赞赏