Java检查变量是否为A-G。如果没有,显示错误消息并再次询问

时间:2017-12-02 18:58:20

标签: java

我正在尝试编写一个可以在音阶上计数的程序。不幸的是,我遇到了一个问题。我需要一种方法来检查输入值是否是音阶上的音符之一。如果是,请将其转换为数字以便以后计算。如果没有,则显示错误并再次询问。我试图做到这一点,即使我给出一个有效的音符,它也会让我陷入无限循环。有帮助吗? 我的代码:

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

1 个答案:

答案 0 :(得分:0)

note != "A"这不是比较字符串的正确方法。使用equals()

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

那是因为==!=比较引用而不是对象'内容'。要按“内容”比较字符串,您需要使用equals()方法。