首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >做一串字母和数字?

做一串字母和数字?
EN

Stack Overflow用户
提问于 2011-11-01 12:19:29
回答 2查看 210关注 0票数 0

我想写一个音乐节目已经有一段时间了,但是我对编程还不太了解,所以这可能不会发生。这个项目最初的目标是用字母名称表示吉他和弦(Ex: CMaj = CEG),可能有几种不同类型的和弦(大调、未成年人和弦、缩小和弦等)。为了使这是最简单的,我想我将从一个C大调开始,因为在那里没有高音或平底音。我的第一个和弦可能是C大调,它是量表的第1、第3和第5部分( C D E F G A B )。我的问题是,使用字符串和字符(或者其他一些方式,我有点猜测),是否有一种方法将C表示为String(?)C,其中C=1,D=2,E=3,..etc。所以当节目输入一个大和弦时,它要求第一、第三和第五个音阶?基本上,用户选择chord,它将转换为1,3,5,然后音阶被匹配,程序调用这个音阶的这3个特定的间隔。

任何帮助都将不胜感激,或者以一种完全不同的方式来思考这个问题。

利用我所掌握的很少的知识,我使用了神谕网站并找到了他们的枚举示例,并将其组合在一起:

代码语言:javascript
复制
public enum Chord {
CHORD, MAJOR, MINOR, DIMINISHED, BASS, BASS2

}

代码语言:javascript
复制
public enum Scales {
C, D, E, F, G, A

}

代码语言:javascript
复制
public class EnumTest {
Chord chord;

public EnumTest(Chord chord) {
    this.chord = chord;
}

public void tellItLikeItIs() {
    switch (chord) {
        case MAJOR: System.out.println("C, E, G");
                     break;

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


}

}

我仍然不明白,使用Olivers的例子,当我做一个C大和弦时,我想要标尺枚举的第1、第3和第5值。我喜欢使用C中的半声调和建立每个和弦的想法,但我不知道如何将#s放入Scales类(非法字符)。基本上,我的问题是如何让Chord类从Scales类获得比例度,并将其插入到EnumTest类中?

(如果有别的地方,我可以去问一些愚蠢的问题,而不去打扰别人,我可以试着去问。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-01 12:57:34

基本上,音符、和弦和和弦级数是枚举的组合。

我会这么做的:

首先是注解的精粹。用半色调而不是音符来思考要容易得多。

注{C (1),C# (2),D (3),D# (4),E (5),F (6),F# (7),G (8),G# (8),A (9),A# (10),B (11)}

Note.ordinal()的实现,如mishaddof所建议的那样

第二,我将有一个和弦枚举,包含所有可能的和弦类型,这给出了偏移的半色调,以添加到根音符。举个例子:

大调(4,7),小调(3,6)}

找到CMaj就像得到C注和在Notes中得到位于4 (E)和7 (G)半色调的注释一样简单。对于G#Maj(8),C(8+4 =12(-11)=1 ),D# (8+7=15-11=4)。对于Dmin,D(3),F(3+3 =6)和A#(3+7=9)

票数 2
EN

Stack Overflow用户

发布于 2011-11-01 12:31:55

如果需要有限的值集并将某些参数绑定到这些值,请使用埃努姆

我第一次看到这个问题:

代码语言:javascript
复制
enum Note {
 C, D, E, F, G, A, B
}

class Chord {
   List<Note> notes;
}

在这种情况下,便笺列表包含了插入顺序中的和弦音符。如果你不关心秩序,而且我认为和弦不可能包含类似的音符,那就用Set作为音符持有者。

此外,如果您需要代码,使用Note.ordinal()返回您的笔记代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7966315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档