0

音符を移調しようとしていますが、返される結果が本来あるべきものではありません。私のコードをチェックして、どこが間違っているか教えてください。

public int changeTone(String chord) {
            int changeTone = 0;
            switch(chord) {
            case "I":
            changeTone = 0;
            break;
        case "II":
            changeTone = 1;
            break;
        case "III":
            changeTone = 2;
            break;
        case "IV":
            changeTone = 3;
            break;
        case "V":
            changeTone = 4;
            break;
        case "VI":
            changeTone = 5;
            break;
        case "VII":
            changeTone = 6;
            break;
        case "i":
            changeTone = 0;
            break;
        case "ii":
            changeTone = 2;
            break;
        case "iii":
            changeTone = 4;
            break;
        case "iv":
            changeTone = 5;
            break;
        case "v":
            canviDeTo = 7;
            break;
        case "vi":
            changeTone = 9;
            break;
        case "vii":
            changeTone = 11;
            break;
        default:
            System.out.println("Vaya"); 
            break;

        }
        return changeTone ;
    }

public String getChord(int interval) {
    String chord = "";

    switch(interval) {
            case "0":
                chord = "C";
                break;
            case "2":
                chord = "D";
                break;
            case "4":
                chord = "E";
                break;
            case "5":
                chord = "F";
                break;
            case "7":
                chord = "G";
                break;
            case "9":
                chord = "A";
                break;
            case "11":
                chord = "B";
}
return chord;
}

public String WriteChord(String chords, String tone) {
    String finalChord;
    String[] chordArray = chords.split("-");
    for(int i=0; i < chordArray.length; i++){
        String chord = chordArray[i];
        int interval = changeTone(chord);
        chord = getChord(interval);
        Note note = new Note(chord);
        finalChord += note.changeValue(interval).toString() += "-";
    }
return finalChord;

}


OK、これがやろうとしているのは、与えられた和音進行を間隔で指定して、和音の値を変更することです。I-III-IV-ivのように。ユーザーはトーン (トニカル、I note) を選択し、その音符を参照してコードが変更されます。したがって、たとえば、コードを実行すると、次のようになります。

  • ユーザーはトーンを選択し、「E」と言います。
  • このコードは、「I-III-IV-iv」などのコード進行を生成します。
  • このコードは、I と III、I と IV、I と iv の間の間隔を取得します。
  • 最初の音「E」は音程とともに値が変化します。

予想される出力は次のとおりです: EG#-A#-A# 実際の出力は次のとおりです: CG#-G#-Bb

なぜこれが機能しないのですか?コードを簡略化したので、もう少し必要な場合はお知らせください。前もって感謝します。

編集:コードを修正し、期待/取得した出力を追加しました。

4

1 に答える 1