2014-12-08 3 views
-1

Directions-Инициализация массива с петлей и формулы

В области, например, класс переменных:

  • объявить целочисленную переменную для хранения количества банкнот, установить его до 13.
  • Объявите и выделите массив объектов GuitarString размером 13. Примечание. Убедитесь, что вы удалили исходные переменные экземпляра (stringA и stringC).
  • Объявите массив примечаний типа String, размер 13.
  • Инициализировать массив ноты со следующими 13 значений: "С", "C#", "Д", "D #", "Е", "F", "F #", "Г", "G #", "A #" "А", "Б", "Н" В основном методе:

Присвоить массив GuitarString в главной для всей октавы. Вы должны использовать цикл, а не тринадцать отдельных операторов. Не забудьте выделить каждую гитарную строчку новой. Используйте следующую формулу для расчета частоты каждой строки: double frequency = 440.0 * Math.pow (1.05956, index - 9); p12.strings [index] = new GuitarString (частота);

Здесь отображение для индекса показано выше: 0 - средний С ("С") 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")

Вышеуказанные ноты представляют собой одну октаву фортепиано от средней С до высокой С

Мой code-

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

Похоже, что ваш инструктор хочет, чтобы создать новый тип объекта из GuitarString, чтобы не создать массив строк – frenchDolphin

+0

Когда я изменить его, чтобы сделать новый объект, я получаю: " Тип несоответствия: невозможно преобразовать из GuitarString в String " – OC22

+0

Несвязанный побочный эффект: я понимаю, что ваш инструктор говорит, что нота H равна среднему C, но H фактически эквивалентна примечанию B: http: //en.wikipedia .org/вики/B_% 28musical_note% 29. На всякий случай, когда на этот пост попадают какие-либо музыканты. –

ответ

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

}