路线 -
在类实例变量的区域中:
在main中为整个八度音程初始化GuitarString数组。 您必须使用循环,而不是十三个单独的语句。 记得用new分配每个GuitarString。 使用以下公式计算每个字符串的频率: double frequency = 440.0 * Math.pow(1.05956,index-9); p12.strings [index] =新的GuitarString(频率);
以下是上面显示的索引的映射: 0 - 中间C(" C") 1 - C#高于中间C(" C#") 2 - D高于中间C(" D") 3 - D#高于中间C(" D#") 4 - E高于中间C(" E") 5 - F高于中C(" F") 6 - F#高于中间C(" F#") 7 - G高于中C(" G") 8 - G#高于中间C(" G#") 9 - A中间C(" A") 10 - A#高于中间C(" A#") 11 - B高于中间C(" B") 12 - 高C(" H")
以上注释表示从中间C到高C的钢琴的一个八度音阶。
我的代码 -
public class P12 {
int numNotes = 13;
GuitarString[] GuitarString = new GuitarString[13];
public String[] strings = new String[]{"C", "C#","D","D#","E","F","F#","G","G#","A","A#","B","H"};
public static void main(String[] args) {
// Instantiate object
P12 p12 = new P12();
for(int index = 0; index <= p12.numNotes; index++){
double frequency = 440.0 * Math.pow(1.05956, index - 9);
p12.strings[index] = new GuitarString(frequency);
}
我的问题是如何在循环中初始化GuitarString数组并使用给定的公式?
答案 0 :(得分:0)
试试这个:
public class P12 {
int numNotes = 13;
public GuitarString[] gStrings = new GuitarString[13];
public String[] strings = new String[]{"C", "C#","D","D#","E","F","F#","G","G#","A","A#","B","H"};
public static void main(String[] args) {
// Instantiate object
P12 p12 = new P12();
for(int index = 0; index <= p12.numNotes; index++){
double frequency = 440.0 * Math.pow(1.05956, index - 9);
p12.strings[index] = new p12.GuitarString(frequency);
}
}
private class GuitarString {
double freq;
GuitarString(double frequency) {
freq = frequency;
}
}