如何避免重复填充数组

时间:2013-05-13 13:38:26

标签: java arrays repeat

我有下一个代码,我想要做的是检查数组中是否有值。问题是,我的代码在我给出的值作为参数和数组中的最后一个值之间进行比较,我要检查的是看到我有值然后返回布尔值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;
}

5 个答案:

答案 0 :(得分:3)

不需要此部分:

 else {
        f = false;
    }

因为如果其中一个匹配则匹配,则无需将其设置回true。你也可以在匹配后返回,以加快代码的速度(更合乎逻辑)。

如果您让else部分留在那里,一旦找到不相等的值,它会将值设置回false。考虑为[1, 2]找到1,您会看到。

答案 1 :(得分: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;
}

答案 2 :(得分: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;
}

答案 3 :(得分:0)

也许你可以使用Collection。哈希之类的东西可以帮助你 http://www.java2s.com/Tutorial/Java/0140__Collections/Createuniquelistsofitems.htm

答案 4 :(得分:0)

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

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

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