Java中的返回错误?
我从我的代码的这一部分中得到一个错误:Java中的返回错误?,java,Java,我从我的代码的这一部分中得到一个错误: 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(inPersonalNum
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;
}
public boolean findCustomer(字符串输入personalNumber){
//检查个人号码是否已经存在
for(int i=0;i看起来您已经关闭了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;
}
public boolean findCustomer(字符串输入personalNumber){
//检查个人号码是否已经存在
对于(int i=0;i
因为如果返回true,for循环将失去意义。
如果要停止循环,请使用break;
而不是第一次返回。公共布尔findCustomer(字符串输入personalNumber){
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 ;
}
布尔结果=假;
//检查个人号码是否已经存在
for(int i=0;i第一次返回仅在满足所有条件的情况下返回,但此方法应根据代码返回boolean
。在失败的情况下也应返回
删除第一个返回不会影响编译,因为它在第二个位置有一个返回,在没有任何条件的情况下可以工作
编辑:回答第二个问题
这段代码有两个返回值,但若您的customerList的大小为0,那个么在这种情况下,该方法也必须返回boolean。对吗?仅此而已,编译器会询问
顺便说一句,代码没有空检查
您的最终代码可能是这样的。在代码中保留多个返回语句不是一个好的做法
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;
}
public boolean findCustomer(字符串输入personalNumber){
布尔retVal=false;
如果(!(inPersonalNumber==null | | inPersonalNumber.trim()等于(“”)
||customerList==null | | customerList.size()==0)){//输入对运行此检查有效
//检查个人号码是否已经存在
对于(int i=0;i
当我删除第一个返回时,返回true,而不是最后一个返回
是的,它没有在我的eclipse代码中得到错误,但是为什么我不能得到呢
第一个地方,这会是一样的吗
如果删除第二个return语句,代码将能够运行而不返回值-这是不可能的,因为您将该方法定义为具有布尔返回类型。因此,无论发生什么情况,它都必须始终返回值
只需将第二个return语句更改为false即可。您的编辑2无法编译,因为您的代码可能不会进入for循环。如果customerList.size()
为0。要解决此问题,您只需在for循环之后添加一条return语句:
// 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;
//检查个人号码是否已经存在
对于(int i=0;iIt)来说,如果您提到您得到的错误,可能会有所帮助……顺便说一下:不管怎样,您的函数总是返回true
,因此您的逻辑可能也有问题!您的方法编译得很好,那么您看到了什么错误?最后一次返回应该是“return false”由于您没有找到客户。鉴于上面的评论,Eclipse是否会抱怨您的代码总是返回true?我想您已经关闭了“自动生成”eclipse的功能。它可能会抱怨以前在你还没有完全输入代码时出现的错误!@3D Krativ:你在第二次编辑后是遇到了相同的错误,还是遇到了不同的错误?请在写问题时更加明确,这使人们更容易理解你的问题可能是!不需要休息。看看我的答案。我不觉得这比仅仅返回有什么改进。而且这是一种糟糕的编码风格。返回更明确。@IvanYatskevich:不管它是不是糟糕的编码风格,都是非常主观的。让你的代码被大量的返回语句
弄得乱七八糟,结果会非常糟糕d也是(我并不是说这是其中之一)!对我来说,如果我能确定在方法的末尾有一个return
语句,那么阅读和理解代码就更容易了。显然,不是每个人都喜欢这种风格,什么路径不会返回值?@DaveNewton如果他删除了第二个return语句,我想这就是askI想问的问题说错误发生在显示的代码中,这是第一句话所说的。@DaveNewton我直接引用了我认为相关的句子。考虑到这个问题,我仍然认为我的答案是有效的。他用不同代码说的部分没有错误?有趣的是,但没问题。你怎么知道他想要什么?他只是问他为什么是ge错误。也许他只是想知道eclipse是如何工作的。我没有投反对票,但这并没有解决问题,只是指出了一个潜在的业务逻辑问题。看起来你是那个用“休息”来回答问题的人(不管你是否这样做),如果“休息”的话,这些反对票是不合适的“这就是原因。”阿达什我没有,并且明确地说了这么多。
// 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;