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;