2017-12-02 1 views
0

私は音階を上下にカウントするプログラムを作成しようとしています。残念ながら、私は問題に遭遇しました。入力値が音階の音符の1つであるかどうかを確認する方法が必要です。そうであれば、それを後の計算のために数値に変換します。そうでない場合は、エラーを表示してもう一度尋ねます。私はこれをやろうとしましたが、有効なメモを与えても無限ループになります。どんな助け? マイコード:Java変数がA-Gかどうかを確認します。そうでない場合は、エラーメッセージを表示して再度尋ねます

package music; 

import java.util.Scanner; 

import javax.swing.JOptionPane; 

public class musicc { 
    public static void main(String[] args) throws Exception { 
     int noteid; 
     noteid = musicc.getNoteId(); 
    } 

    public static int getNoteId() { 
     String note = "0"; 
     int returnValue = 0; 
     note = (String)JOptionPane.showInputDialog(null,"What note do you want to start on?",JOptionPane.PLAIN_MESSAGE); 

     while (note != "A" && note != "B" && note != "C" && note != "D" && note != "E" && note != "F" && note != "G") { 
      JOptionPane.showMessageDialog(null, note + " is not a valid note! Try again.", "Invalid note!", JOptionPane.ERROR_MESSAGE); 
      note = (String)JOptionPane.showInputDialog(null,"What note do you want to start on?",JOptionPane.PLAIN_MESSAGE); 
     } 
     switch(note) { 
     case "A":return 1; 
     case "B":return 2; 
     case "C":return 3; 
     case "D":return 4; 
     case "E":return 5; 
     case "F":return 6; 
     case "G":return 7; 
     } 
     return 0;  
    } 
} 
+0

文字列の比較に '!='を使用しないでください。代わりに '!note.equals(" A ")'を使用してください。説明については重複した質問を参照してください。 – Jesper

答えて

0

note != "A"文字列を比較するための正しい方法ではありません。 equals()使用:==!=を参照していないオブジェクトの内容」を比較しているためだ

if (!"A".equals(node)... 

を。文字列を '内容'で比較するには、equals()メソッドを使用する必要があります。

関連する問題