使用循环和公式初始化数组

时间:2014-12-08 01:04:09

标签: java arrays

路线 -

在类实例变量的区域中:

  • 声明一个整数变量来保存音符数,将其设置为13.
  • 声明并分配一个大小为13的GuitarString对象数组。 注意:确保删除原始实例变量(stringA和stringC)。
  • 声明String类型的数组,大小为13。
  • 使用以下13个值初始化notes数组: " C"" C#"" d"" d#"" E"" F& #34;" F#"" G"" G#"" A"" A#",& #34; B"" H" 在主要方法中:

在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数组并使用给定的公式?

1 个答案:

答案 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;
    }

}