Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    if (concentrations[i]==studentconcentration)

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

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

    基本上,==只比较引用(或原语类型的值),要更详细地描述为什么是这种方式,see this question

  2. # 2 楼答案

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

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

    例:

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

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

    希望有帮助

  3. # 3 楼答案

    您有一个比较错误。在Java中,使用==运算符处理字符串失败,因为字符串不是基本类型,而是对象。因此必须使用String类的equals方法,如下所示

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

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

    if (concentrationvalid)
    

    上述语句与您的语句相同,但可读性更强

    希望这有帮助