Então, simplesmente não consigo exibir a porcentagem que que está sendo exibida, não tenho muita experiência então deve ter um meio mais fácil de exibir a porcentagem.
package ListaExercício;
import java.util.Scanner;
public class Exercício13 {
/*
* 13. Desenvolva um algoritmo para ler o número total de votos em uma eleição
* municipal, assim como o número de votos brancos, nulos e válidos. Calcular e
* mostrar o percentual de cada um em relação ao total de votos.
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Informe o número total de eleitores na cidade: ");
int totalEleitores, brancos, nulos, validos, votantes;
brancos = 0;
nulos = 0;
validos = 0;
votantes = 0;
totalEleitores = scan.nextInt();
while (votantes < totalEleitores) {
System.out.println(
"Digite 1 para ser voto válido, 2 para branco e 3 para nulo, ou aperte p para parar o programa.");
String tecla = scan.next();
votantes++;
if (tecla.equals("1")) {
validos++;
} else if (tecla.equals("2")) {
brancos++;
} else if (tecla.equals("3")) {
nulos++;
} else if (tecla.equals("p")) {
break;
} else {
System.out.println("Informe uma tecla válida!");
break;
}
}
System.out.println("**********************************************");
System.out.println("A porcentagem de votos válidos é: " + ((validos/totalEleitores)* 100) + "%");
System.out.println("A porcentagem de votos nulos é: " + ((nulos/totalEleitores)* 100) + "%");
System.out.println("A porcentagem de votos em branco é: " + ((brancos/totalEleitores)* 100)+ "%");
}
}
Se alguém conseguir me auxiliar serei grato!
???
Suas variáveis são do tipo inteira, int! Então em uma divisão entre inteiros o resultado é inteiro! Exemplo:
int a = 1;
int b = 2
System.out.println(a/b); // resultado é 0 e não 0,5
// é necessário fazer um cast
System.out.println((float)a/b); // resultado 0,5
Boa tarde!
Mas mesmo assim sempre fica = 0.
A ideia é que nos últimos sysout lá em baixo saia o resultado de dentro do while.
Ah entendi agora, apenas coloquei o float no lugar errado.
Funcionou, deu certo, agradeço o FeedBack.
1 curtida
public class Exercicio13 {
/**
* 13. Desenvolva um algoritmo para ler o número total de votos em uma eleição
* municipal, assim como o número de votos brancos, nulos e válidos. Calcular e
* mostrar o percentual de cada um em relação ao total de votos.
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String resultString = "**********************************************\n" +
"A porcentagem de votos válidos é: %.2f %%\n" +
"A porcentagem de votos nulos é: %.2f %%\n" +
"A porcentagem de votos em branco é: %.2f %%\n";
int totalEleitores = 0;
int brancos = 0;
int nulos = 0;
int validos = 0;
int votantes = 0;
System.out.println("Informe o número total de eleitores na cidade: ");
totalEleitores = scan.nextInt();
votacao:
while (votantes < totalEleitores) {
System.out.println("Digite 1 para ser voto válido, 2 para branco e 3 para nulo, ou aperte p para parar o programa.");
String tecla = scan.next();
switch (tecla.toLowerCase()) {
case "1":
validos++;
break;
case "2":
brancos++;
break;
case "3":
nulos++;
break;
case "p": //pular?
votantes++;
continue;
default:
System.out.println("Informe uma tecla válida!");
continue votacao;
}
votantes++;
}
System.out.println(String.format(resultString,
getValorPercentual(validos, totalEleitores),
getValorPercentual(nulos, totalEleitores),
getValorPercentual(brancos, totalEleitores)
));
}
static Float getValorPercentual(int votos, int totalEleitores) {
return BigDecimal.valueOf(votos)
.divide(BigDecimal.valueOf(totalEleitores))
.multiply(BigDecimal.valueOf(100))
.floatValue();
}
}
2 curtidas