尝试查看数组并希望它在数组中包含名称时返回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