我的代码中的代码中出现错误:
public boolean findCustomer(String inPersonalNumber){
// check if personal number already exist
for (int i=0; i<customerList.size();i++) {
if(customerList.get(i).getCustomerPersonalNumber().equals(inPersonalNumber)){
return true;
}
}
return true;
}
当我删除第一个返回true而不是最后一个返回true时,它不会在我的eclipse代码中得到错误,但为什么我不能拥有第一个位置并且这是否相同?谢谢!
编辑:来自eclipse的错误消息说:此方法必须返回boolean类型的结果。我很困惑,因为这不是我做过的事情吗?!
是的,中断必须在代码中
我可以用其他方式编写方法吗?
编辑编号2
为什么这段代码不起作用?
public boolean findCustomer(String inPersonalNumber){
// check if personal number already exist
for (int i=0; i<customerList.size();i++) {
if(customerList.get(i).getCustomerPersonalNumber().equals(inPersonalNumber)){
return true;
}
else {
return false;
}
}
}
此方法返回一个布尔值,所以我不明白为什么会出错!?代码对我来说是正确的吗?
答案 0 :(得分:3)
您的编辑#2无法编译,因为您的代码可能无法进入for循环。如果customerList.size()
为0,就会出现这种情况。要解决此问题,您只需要在 for循环之后添加一个返回语句:
// check if personal number already exist
for (int i=0; i<customerList.size();i++) {
if(customerList.get(i).getCustomerPersonalNumber().equals(inPersonalNumber)){
return true;
}
else {
return false;
}
}
return false;
此处的另一点是,此代码逻辑上没有多大意义:它将仅基于第一个返回true或false列表中的项目。这可能不你想要什么。所以在这里仔细看看其他几个答案,其中很多都是你如何做到这一点的好例子。
答案 1 :(得分:0)
看起来你已经关闭了eclipse的自动构建功能。它可能会抱怨当你还没有完全输入你的代码时曾经存在的错误!如果您因某种原因更新了系统,也会发生这种情况。
另外,如果条件不满足,你不应该返回false
吗?
public boolean findCustomer(String inPersonalNumber) {
// check if personal number already exist
for (int i = 0; i < customerList.size(); i++) {
if (customerList.get(i).getCustomerPersonalNumber().equals(inPersonalNumber)) {
return true;
}
}
return false;
}
答案 2 :(得分:0)
public boolean findCustomer(String inPersonalNumber){
boolean result = false;
// check if personal number already exist
for (int i=0; i<customerList.size();i++) {
if(customerList.get(i).getCustomerPersonalNumber().equals(inPersonalNumber)){
result = true;
break;
}
}
return result ;
}
答案 3 :(得分:0)
首次返回仅在满足所有条件的情况下返回,但此方法应按代码返回boolean
。它也会期待失败的回归。
删除第一个返回不会影响编译,因为它在第二位有一个返回,它可以在没有任何条件的情况下工作。
编辑:回答第二个问题
这段代码有两个返回值,但是如果你的customerList的大小为0,那么在这种情况下,方法必须返回boolean。对?仅此而已,编译器正在询问。
BTW,代码没有空检查。
你的最终代码可能是这个。在代码中保留多个return语句不是一种好的做法。
public boolean findCustomer(String inPersonalNumber) {
boolean retVal = false;
if (!(inPersonalNumber == null || inPersonalNumber.trim().equals("")
|| customerList == null || customerList.size() == 0)) { // inputs are valid to run this check
// check if personal number already exist
for (int i = 0; i < customerList.size(); i++) {
if (inPersonalNumber.equals(customerList.get(i).getCustomerPersonalNumber()) { // to avoid NPE, kept inPersonalNumber in check
retVal = true;
break;
}
}
}
return retVal;
}
答案 4 :(得分:0)
当我删除第一个返回true而不是最后一个返回时 是的,它没有在我的eclipse代码中得到错误,但为什么我不能 第一个地方,这会是一样的吗?
如果删除第二个return语句,代码将能够运行而不返回值 - 这是不可能的,因为您将方法定义为返回类型为Boolean。所以它必须总是返回一个值,无论如何。
只需将第二个return语句更改为false ,就可以执行您想要的操作。
答案 5 :(得分:-1)
因为你的for循环失去意义,无论如何你都会回归真实
如果你想停止循环使用break;
而不是第一次返回。