gpt4 book ai didi

java - 如何使用另一个枚举选择特定的 enum.ordinal() ?

转载 作者:行者123 更新时间:2023-12-02 00:35:11 28 4
gpt4 key购买 nike

首先,我的代码(它远非完美,我真的不知道我在做什么)是这样的:

   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: 非法字符:\35 我试图研究转义字符,但我要么不理解我读的文章,要么我看错了东西。有人还可以告诉我如何将 # 添加到 Scales 类中而不使它们成为非法字符吗?任何帮助表示感谢

最佳答案

在以下示例中,您可以了解如何解决您面临的一些问题:

public class EnumTest
{
public enum Chord
{
MAJOR,
MINOR,
DIMINISHED,
BASS,
BASS2
}

public enum Scales
{
C("C"),
CSharp("C#"),
E("E"),
F("F"),
G("G"),
A("A");

private final String printName;

Scales(String printName)
{
this.printName = printName;
}

public String getPrintName()
{
return printName;
}

public String toString()
{
return printName;
}

private static final Map<Chord, List<Scales>> scalesForChord;

static
{
scalesForChord = new HashMap<Chord, List<Scales>>();

scalesForChord.put(Chord.MAJOR, Arrays.asList(Scales.C, Scales.E, Scales.G));
}

public static List<Scales> getScalesForChord(Chord chord)
{
return scalesForChord.get(chord);
}
}
}

关于java - 如何使用另一个枚举选择特定的 enum.ordinal() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8009373/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com