我有一個問題,我試圖比較一個對象的名稱(字符串)與另一個字符串,我試過使用.equals()
以及==
但似乎都沒有工作在我的情況。Java:檢查一個字符串是否等於一個字符串
我現在所擁有的代碼是:
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;
}
}
}
程序總是返回false,即使已設置爲product[i]
名稱相同給出的參數。我試着查看與.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;
}
我仍然得到同樣的問題與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
所以,這是所有與該代碼我問題。我仍然不確定爲什麼該方法返回false
,雖然兩個值都接收到相同的字符串值。
編輯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
SOLUTION
我固定的問題:不是使用.equals()
,我嘗試使用.equalsIgnoreCase()
和有效。
將您的所有代碼發佈到測試它並初始化產品陣列 –
爲什麼循環如果只循環一次? return語句終止循環和方法。 – Houssni
if!product [0] .getName()。equals(checkName)循環停止並且方法返回false – j3ny4