试着学习方法/布尔值。需要帮助

时间:2013-11-02 02:06:38

标签: java

试图找出我的代码在这里出了什么问题 - 我希望用浓度数组检查用户输入,如果他们输入任何数组打印出正显示消息...但是,我得到一个输出无论输入如何,“是的,这是一个有效的集中”。

import javax.swing.JOptionPane;
public class BASIT_Concentration_Check
{
    public static void main(String[] args) 
    {
        String[] concentrations = {"DTP","HCIT","INFS","NTEL","WDM"};
        String studentconcentration = getStudentConcentration();
        boolean concentrationvalid = isConcentrationValid(studentconcentration, concentrations);
        displayMessage(concentrationvalid);
    }

    public static String getStudentConcentration()
    {
        String studentconcentration = JOptionPane.showInputDialog(null,"What is your B.S. AIT Concentration?");
        return studentconcentration;
    }

    public static boolean isConcentrationValid(String studentconcentration, String [] concentrations)
    {
        boolean concentrationvalid=false;
        for (int i=0;i<concentrations.length;i++)
        {
            if (concentrations[i]==studentconcentration)
                {
                    concentrationvalid = true;
                }
        }
        return concentrationvalid;
    }

    public static void displayMessage(boolean concentrationvalid)
    {
        if (concentrationvalid==true)
        {
            JOptionPane.showMessageDialog(null, "Yes, that is a valid concentration");
        }
        else
        {
            JOptionPane.showMessageDialog(null,"I'm sorry, that is not a valid concentration");
        }
    }
}

3 个答案:

答案 0 :(得分:1)

if (concentrations[i]==studentconcentration)

这不是你在Java中比较字符串的方式!

而是使用if (concentrations[i].equals(studentconcentration))

基本上,==仅比较引用(或原始类型的值),以更详细地说明原因,{{3 }}

答案 1 :(得分:0)

您有比较错误。在Java中,使用==运算符会失败,因为字符串不是基本类型,它们是对象。所以你必须使用String类的equals方法,就像这样。

if (concentrations[i].equals(studentconcentration))

这应该有效。如果验证为true,您还可以添加break;语句以保存一些cpu处理。还有一件事,没有必要在布尔值的if比较中添加== true,你可以使用

if (concentrationvalid)

以上陈述与您的陈述相同,但更具可读性。

希望这有帮助。

答案 2 :(得分:0)

您需要使用.equals()来比较Java中的字符串。它将返回一个布尔值true或false,如果为true,将激活if语句,如果为false则跳过它。

如果您希望比较忽略字母是大写还是小写,也可以使用.equalsIgnoreCase()

前:

if (concentrations[i].equals(studentconcentration))

if (concentrations[i].equalsIgnoreCase(studentconcentration))

希望有所帮助!