嘗試查看數組並希望它在數組中包含名稱時返回true,如果數組中不包含則返回false。錯誤:在Java中丟失返回語句
public boolean ifInArray(String name)
{
for (Dog breed: breeds) {
if (breed.equals(name)) {
return true;
} else {
return false;
}
}
}
嘗試查看數組並希望它在數組中包含名稱時返回true,如果數組中不包含則返回false。錯誤:在Java中丟失返回語句
public boolean ifInArray(String name)
{
for (Dog breed: breeds) {
if (breed.equals(name)) {
return true;
} else {
return false;
}
}
}
刪除ELSE塊放置return false
循環結束後。如果它找到一個值,它將從循環內部返回true。如果它什麼都沒有找到,它將在循環結束後返回false。
如果第一個品種不匹配,您的當前實現將返回false,而不是檢查所有品種。
您可以將布爾值存儲在一個變量中,並返回該變量。
public boolean ifInArray(String name)
{
Boolean result = null;
for (Dog breed: breeds) {
if (breed.equals(name)) {
result = true;
} else {
result = false;
}
}
return result;
}
你有返回裏面如果,所以它不直接訪問的方法。如果是,那麼必須有一個默認值,尤其是因爲如果在for循環中。考慮一下字符串爲空的情況,該方法將無法返回。
寫你的方法是:
public boolean ifInArray(String name)
{
for (Dog breed: breeds) {
if (breed.equals(name)) {
return true;
} else {
return false;
}
}
return false;
}
謝謝你的工作! – tintanten
你只是在尋找在數組「品種」中的第一項,並立即返回真/假值。您需要迭代每個元素,並且只有在找到匹配項時才返回true。否則,返回false。
public boolean ifInArray(String name)
{
for (Dog breed: breeds) {
if (breed.equals(name))
return true;
}
return false;
}
你需要移動回假外的for循環 –
此外,這永遠不要向外界返回TRUE;。 '品種'是'Dog'類型,'name'是'String'類型,所以兩者不應該是平等的。如果你寫了'Dog.equals',以便在給定一個String時返回'true'(例如,如果String代表同一品種),那麼這是不正確的。 'equals'的合約要求它是對稱的 - 如果a.equals(b)'then'b.equals(a)'。由於你無法控制'String.equals'(特別是,當給定'Dog'時,絕不會讓它返回'true'),所以當給定一個String時,'Dog.equals'不應該返回'true' '。 – yshavit