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?
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?
Cola o código aqui.
[code]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");
}
}[/code]
desconsidera aquele porc1 = 8/4
Imagine que acm1 = 0
porc1 = ((0 * acmtodos) / 100);
porc1 sempre vai dar zero.
não, mas ali, tem um que é o acumulador, conforme a pessoa digita o numero 1 é acumulado ali
Se não entrar no case, não vai acumular.
acumula sim! testei dando um System.out.println(acm1) pra ver se tava acumulando!
é outra, eu testei dividir apenas 25/100 que era pra dar 0,25 e deu 0.0
Pq vc esta divivindo int neh, tenta assim “new Double(25) / new Double(100)”, ai vai dar certo.
[quote=analyser]Imagine que acm1 = 0
porc1 = ((0 * acmtodos) / 100);
porc1 sempre vai dar zero.[/quote]
experimenta 100.0 (double)
porc1 = ((0 * acmtodos) / 100.0);
boa cara, com 100.0 funcionou
mas achei um pau nervoso isso! ¬¬
agradeço
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.