统计模式(计算器Java)

时间:2015-10-18 19:09:11

标签: java calculator mode

好吧,我正在使用Java编写算术计算器,我试图实现一个计算模式的函数。问题是由于某种原因,它无法正常工作。这是功能:

public static String moda(Double[] valores){

    Double resultado = null;
    Integer contador = 0;
    Integer contadorFinal = 0;

    for(int i = 0; i < valores.length; i++){

        contador = 0;
        for(int j = 0; j < valores.length; j++){

            if(valores[i] == valores[j]) contador++;
        }

        if(contador > contadorFinal){
            resultado = valores[i];
            contadorFinal = contador;
        }
    }

    return "La moda es " + resultado + " que se repite un total de " + contadorFinal + " veces.";
}

出于某种原因,它总是返回数组的第一个值(例如,如果Double [] valores包含(4,7,7,8,8,8)它将返回我4) ;并且模式也始终为1。

我一直在看代码,对我而言看起来很好。你能帮帮我吗?

1 个答案:

答案 0 :(得分:4)

这是因为您通过平等比较Double。使用double或使用Double.compare()

for(int i = 0; i < valores.length; i++){

    contador = 0;
    for(int j = 0; j < valores.length; j++){

        if( Double.compare( valores[i], valores[j] ) == 0 ) 
           contador++;
    }

    if(contador > contadorFinal){
        resultado = valores[i];
        contadorFinal = contador;
    }
}