Java,将字符串数组设置为双数组
我在这个java项目中遇到了一些问题。所以这个项目的一部分是设置与频率相等的注释。我制作了一个音符的字符串数组和一个频率的双数组,但我不知道如何将字符串数组设置为双数组,以便在播放音符时,它播放到双数组的特定频率。有没有更好的方法
double[] freq = {
16.35, 17.32, 17.32, 18.35, 19.45, 19.45, 20.60, 21.83, 23.12,
23.12, 24.50, 25.96, 25.96, 27.50, 29.14, 29.14, 30.87
};
String[] notes = {
"C0", "C#0", "Db0", "D0", "D#0", "Eb0", "E0", "F0", "F#0",
"Gb0", "G0", "G#0", "Ab0", "A0", "A#0", "Bb0", "B0"
};
这是两个数组
# 1 楼答案
除了使用地图,“类型更安全”的答案是:创建一个Note类,比如:
然后你可以继续把play方法也放到课堂上
接下来的其他选项是使用枚举而不是类,很明显,注释
Note("C0", 16.35)
不需要多次创建请注意:在任何情况下,您都希望您的数据以某种方式表示名称与相应频率之间的关系。当前代码基于两个不同数组中的相同的索引隐式创建映射。如图所示,你现在可以决定如何让事情变得更明确
# 2 楼答案
您应该使用
配对,而不是两个不同的数组。 下面是Map类及其类型的Java文档:https://docs.oracle.com/javase/8/docs/api/java/util/Map.html
以下是一些实施示例: https://examples.javacodegeeks.com/java-basics/java-map-example/
但是首先检查一下你需要什么类型的地图。这里有很好的区别: Difference between HashMap, LinkedHashMap and TreeMap
示例:
添加所有注释,然后您可以通过注释名称获得频率,并遍历HashMap的所有属性
如果是一对多关系,应该通过创建带有名称和频率变量的Note类来解决这个问题
# 3 楼答案
如果数组的顺序很重要,或者如果你的任务仅限于数组,这就是我会使用的解决方案(尽管肯定没有地图那么有效)