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()它并且有效.
该方法一旦达到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)