Java:检查String是否等于String

iye*_*070 -1 java string methods equals object

我有一个问题,我试图比较一个对象的名称(字符串)与另一个字符串,我尝试使用.equals(),==但似乎在我的情况下似乎没有.

我现在的代码是:

public boolean checkingObjectName(String checkName)
{
    for (int i=0; i<count; i++) //where 'count' has a value of 3
    {
        if (product[i].getName().equals(checkName)) //where product[i] has been initialised
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

即使已设置的名称product[i]与给定的参数相同,程序也始终返回false .我试图寻找关于其他问题.equals(),并==与其他字符串的引用,但我还没有找到的东西,涉及到我的问题任何运气.

我见过人们使用过compareTo(),但我不确定我的代码是否有必要,而且我不确定如何使用它.


编辑:正如Houssni在评论中所说,我刚刚意识到return语句结束了循环和方法.是否可以检查每个产品的名称而不必在第一次检查后终止方法,并让它返回一个布尔值?

编辑2:我已将代码修改为已提供的答案如何说明,即:

public boolean checkingObjectName(String checkName)
{
    for (int i=0; i<count; i++) //where 'count' has a value of 3
    {
        if (product[i].getName().equals(checkName)) //where product[i] has been initialised
        {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我仍然得到相同的问题与product[i].getName()不等于checkName和返回false的方法,即使它们应该相等.任何可能发生这种情况的可能性,因为我查看了我的代码并且我不确定.

编辑3:与上面的代码块相关的唯一其他代码是来自另一个类的参数输入,它是:

String checkName = JOptionPane.showInputDialog("Enter the name: ");
while (storingProducts.checkingObjectName(checkName) == false) //assume for storingProducts
{
    JOptionPane.showMessageDialog(null, "No products were found. Please re-input name.");
    checkName = JOptionPane.showInputDialog("Enter the name: ");
    storingProducts.checkingObjectName(checkName);
}
if (storingProducts.checkingObjectName(checkName) == true)
//extra code
Run Code Online (Sandbox Code Playgroud)

那么,这就是与我的问题有关的所有代码.我仍然不确定该方法返回的原因false,尽管两个值都接收相同的String值.

编辑4:将product和count从与类未来checkingObjectName方法:

public class Store
{
    private Product[] product; //Product is another class that just sets and gets
    private int count=3;

    public Store()
    {
        product = new Product[count];
        for (int i=0; i<count; i++)
        {
            product[i] = new Product();
        }
    //extra code
Run Code Online (Sandbox Code Playgroud)

解

我解决了这个问题:我没有使用.equals(),而是尝试使用.equalsIgnoreCase()它并且有效.

shm*_*sel 6

该方法一旦达到count0 就返回,并且找不到匹配项.如果要遍历数组,直到找到匹配的名称,则代码应如下所示:

public boolean checkingObjectName(String checkName)
{
    for (int i=0; i<count; i++) //where 'count' has a value of 3
    {
        if (product[i].getName().equals(checkName)) //where product[i] has been initialised
        {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)