Problema com divisão na hora de rodas o programa [resolvido]

13 respostas
J

então na meu netbeans quando eu coloco um numero para dividir ele aparece apenas como 0, eu to fazendo um exercício e nele eu teria que fazer a seguinte conta porc1 = (acm1 * acmtodos) / 100; para acha porcentagem, dai eu tentei coloca pra dividir 25/100 e mesmo assim deu problema, sera que é o programa que esta com pau?

13 Respostas

J

o exercício ta como double!

e eu tentei dividir agora 8/4 e deu, mas quando tento dividir um numero menor por o divisor ele da erro o que poderia ser?

analyser

Cola o código aqui.

J
import javax.swing.JOptionPane;
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int codigo;
        double acm1, acm2, acm3, acm4, acmnulo, acmbranco, acmtodos;
        double porc1, porc2, porc3, porc4, porc5, porc6;

        codigo = 7;
        acm1 = 0;
        acm2 = 0;
        acm3 = 0;
        acm4 = 0;
        acmnulo = 0;
        acmbranco = 0;
        acmtodos = 0;

        while(codigo != 0)
        {
            if(codigo != 0)
            {
            codigo = Integer.parseInt(JOptionPane.showInputDialog("Digite o codigo do candito:"));
            switch(codigo)
            {
                case 1: acm1 = acm1 + 1; break;
                case 2: acm2 = acm2 + 1; break;
                case 3: acm3 = acm3 + 1; break;
                case 4: acm4 = acm4 + 1; break;
                case 5: acmnulo = acmnulo + 1; break;
                case 6: acmbranco = acmbranco + 1; break;
                case 7:
                default: JOptionPane.showMessageDialog(null, "codigo não existe");
                acmtodos = acmtodos + acm1 + acm2 + acm3 + acm4 + acmnulo + acmbranco;
            }
            }
        }
        porc1 = ((acm1 * acmtodos) / 100);
        porc1 = 8/4;
        porc2 = (acm2 * acmtodos)/100;
        porc3 = (acm3 * acmtodos)/100;
        porc4 = (acm4 * acmtodos)/100;
        porc5 = (acmnulo * acmtodos)/100;
        porc6 = (acmbranco * acmtodos)/100;
        JOptionPane.showMessageDialog(null, "A porcentagem do candidato 1 = "+porc1+"\n"+
                                            "A porcentagem do candidato 2 = "+porc2+"\n"+
                                            "A porcentagem do candidato 3 = "+porc3+"\n"+
                                            "A porcentagem do candidato 4 = "+porc4+"\n"+
                                            "A porcentagem de votos em nulo = "+porc5+"\n"+
                                            "A porcentagem de votos em branco = "+porc6+"\n");
    }

}
J

desconsidera aquele porc1 = 8/4

analyser

Imagine que acm1 = 0

porc1 = ((0 * acmtodos) / 100);

porc1 sempre vai dar zero.

J

não, mas ali, tem um que é o acumulador, conforme a pessoa digita o numero 1 é acumulado ali

analyser

Se não entrar no case, não vai acumular.

J

acumula sim! testei dando um System.out.println(acm1) pra ver se tava acumulando!

J

é outra, eu testei dividir apenas 25/100 que era pra dar 0,25 e deu 0.0

analyser

Pq vc esta divivindo int neh, tenta assim “new Double(25) / new Double(100)”, ai vai dar certo.

Z111

analyser:
Imagine que acm1 = 0

porc1 = ((0 * acmtodos) / 100);

porc1 sempre vai dar zero.

experimenta 100.0 (double)

porc1 = ((0 * acmtodos) / 100.0);
J

boa cara, com 100.0 funcionou
mas achei um pau nervoso isso! ¬¬

agradeço

analyser

Não precise colocar o 100 como double.

double a = 25;
double b = a / 100;

System.out.println(b);
0.25

O que não pode é usar dois inteiros e esperar um double.

Criado 15 de junho de 2011
Ultima resposta 15 de jun. de 2011
Respostas 13
Participantes 3