Java部门返回0.0

时间:2013-11-18 01:24:48

标签: java

我得到了这个值数组

float Guy_A [] =  {194,180,221,432,820,200,312,177,190, 70};

我为“总值”写了这个“for”

for (int i=0; i < Guy_A.length;i++)
    { A += Guy_A[i];}

之后我想用这个

进行中点分割
float pcnt_a = A * 100 /vt;
//the vt is declared above as a float and it value is 10489

之后我使用以下命令运行文件:

System.out.println("Guy A has "+A+" votes");
System.out.println("His Average is"+df.format(pcnt_a)+" %\n");

问题是第一行返回'2796.0'(实际总数) 但第二个只返回0.00'%' // df.format为0.00,跳过其他6位十进制数。

我尝试过使用double和int,但它仍然显示0.0。 有人可以解释一下我能用这件事做些什么......

//完整代码:

public class Estadisticas { //float A = 2796;

    float Candidato_A [] =  {194,180,221,432,820,200,312,177,190, 70};
    float Candidato_B [] = { 48, 20, 90, 50, 61,100, 99, 87, 77,122};
    float Candidato_C [] = {206,320,140,821,946,155,501,075,005,12};
    float Candidato_D [] = { 45, 16, 20, 14, 18,355,122,178,501,117};
    float Candidato_E [] = {155,501,075,178,501,117,700,55,78,12};
    float vt = 10489;
    boolean no_win;

    public void totalVotos(){
        for (int i=0; i<Candidato_A.length;i++){
            A += Candidato_A[i]; }
        for (int i=0; i<Candidato_B.length;i++){
            B += Candidato_B[i]; }
        for (int i=0; i<Candidato_C.length;i++){
            C += Candidato_C[i]; }
        for (int i=0; i<Candidato_D.length;i++){
            D += Candidato_D[i]; }
        for (int i=0; i<Candidato_E.length;i++){
            E += Candidato_E[i];
        }
    }

    float A; float B; float C; float D; float E;

    float pcnt_a = A * 100 /vt;
    float pcnt_b = B * 100 /vt;
    float pcnt_c = C * 100 /vt;
    float pcnt_d = D * 100 /vt;
    float pcnt_e = E * 100 /vt;

    public void imprimeDatos(){
        DecimalFormat df= new DecimalFormat("0.00");
        System.out.println("\n\n -- Estadisticas de las elecciones --\n");
        System.out.println("El Candidato A obtuvo "+A+" votos");
        System.out.println("Su Porcentaje de votos fue de "+df.format(pcnt_a)+" %\n");       System.out.println("El Candidato B obtuvo "+B+" votos");
        System.out.println("Su Porcentaje de votos fue de"+df.format(pcnt_b)+" %\n");
        System.out.println("El Candidato C obtuvo"+C+" votos");
        System.out.println("Su Porcentaje de votos fue de"+df.format(pcnt_c)+" %\n");
        System.out.println("El Candidato D obtuvo"+D+" votos");
        System.out.println("Su Porcentaje de votos fue de"+df.format(pcnt_d)+" %\n");
        System.out.println("El Candidato E obtuvo"+E+" votos");
        System.out.println("Su Porcentaje de votos fue de"+df.format(pcnt_e)+" %\n");

        if(A>B && A>C && A>D && A>E){
             System.out.println("-- El Candidato A obtuvo la mayor cantidad de votos --\n");
        } else{
            if(B>A && B>C && B>D && B>E){
                System.out.println("-- El Candidato B obtuvo la mayor cantidad de votos --\n");
            } else{
                if(C>B && C>A && C>D && C>E){
                    System.out.println("-- El Candidato C obtuvo la mayor cantidad de votos --\n");
                } else{
                    if(D>B && D>C && D>A && D>E){
                        System.out.println("-- El Candidato D obtuvo la mayor cantidad de votos --\n");
                    } else{
                        if(E>B && E>C && E>D && E>A){   
                            System.out.println("-- El Candidato E obtuvo la mayor cantidad de votos --\n");
                        }
                    }
                }
            }
        }
    }

对不起西班牙语,现在我需要这个大学的项目。

3 个答案:

答案 0 :(得分:1)

看起来Apcnt_a都是字段。当A设置为pcnt_a时,A * 100 /vt为0。在运行计算pcnt_a的求和循环后,您需要计算A

public void totalVotos() {
    for (int i = 0; i < Candidato_A.length; i++) {
        A += Candidato_A[i];
    }
    for (int i = 0; i < Candidato_B.length; i++) {
        B += Candidato_B[i];
    }
    for (int i = 0; i < Candidato_C.length; i++) {
        C += Candidato_C[i];
    }
    for (int i = 0; i < Candidato_D.length; i++) {
        D += Candidato_D[i];
    }
    for (int i = 0; i < Candidato_E.length; i++) {
        E += Candidato_E[i];
    }
    pcnt_a = A * 100 / vt;
    pcnt_b = B * 100 / vt;
    pcnt_c = C * 100 / vt;
    pcnt_d = D * 100 / vt;
    pcnt_e = E * 100 / vt;
}

答案 1 :(得分:0)

在实例化df时,你没有提到你要分配的值。试试这个:DecimalFormat df = new DecimalFormat(&#34; ####。00&#34;);

答案 2 :(得分:0)

你的格式化程序是错的吗?确保格式化程序中的格式字符串(我假设df表示十进制格式化程序)实际上表示零的数量,而不仅仅是字符串“0.0”。我不知道DF是什么。