1

我有下一个代码,我想做的是检查数组中是否有值。问题是,我的代码只是在我作为参数提供的值和数组中的最后一个值之间进行比较,我想检查的是我有这个值,然后返回布尔值 true,但我的代码只是比较数组中的最后一个值。代码在这里:

public boolean trueIdTienda(String s) {
    boolean f = false;
    for (int x = 0; x < lista.size(); x++) {
        if (s.equals(ventas.getVenta(x).getIdTienda())) {
            f = true;
        } else {
            f = false;
        }
    }
    return f;
}
4

5 回答 5

3

这部分不需要:

 else {
        f = false;
    }

因为如果其中一个匹配它就是匹配,您不需要将其设置回true. 您也可以在比赛后返回,以加快代码速度(并且更合乎逻辑)。

如果您让else零件留在那里,false一旦发现不相等,它将将该值设置回。考虑寻找[1, 2]1你会看到。

于 2013-05-13T13:39:15.367 回答
2

true如果找到值,您的函数可以简化为立即返回。

public boolean trueIdTienda(String s) {
    for (int x = 0; x < lista.size(); x++) {
        if (s.equals(ventas.getVenta(x).getIdTienda())) {
            return true;
        }
    }
    return false;
}
于 2013-05-13T13:40:37.687 回答
2

这是一个经典的搜索算法:

public boolean trueIdTienda(String s) {
    for (int x = 0; x < lista.size(); x++) {
        if (s.equals(ventas.getVenta(x).getIdTienda())){
            return true;
        }
    }
    return false;
}
于 2013-05-13T13:41:06.857 回答
0

问题是,尽管您发现数组中的值等于参数,但您将布尔值设置为 true 并继续与其他将布尔值返回为 false 的值进行比较。

布尔值的最终值是与最后一个值比较的结果,解决问题的方法是在break;后面加上f=true;

尝试了解导致问题的原因,而不仅仅是使用正确的代码。

于 2013-05-13T14:59:21.843 回答
0

也许你可以使用一个集合。像哈希这样的东西应该可以帮助你 http://www.java2s.com/Tutorial/Java/0140__Collections/Createuniquelistsofitems.htm

于 2013-05-13T13:43:22.307 回答