Estou com dificuldade de fazer um laço de repetição

01 –Faça um App Java que leiao nomedo eleitore onúmero do títuloeleitoral. Após o usuário digitar os dados pedir para o usuário votar nos candidatos01-José, 02 –Pedro e 3-Antônio. Está sessão possui 10 eleitores, portando deverá ter um laçode REPETIÇÃOFOR.No final exibir a mensagem“VOTAÇÃO FINALIZADA”e exibir a quantidade de votos de cada Candidato.02 –Faça o mesmo algoritmo acimautilizando o Laço WHILE

import java.util.Scanner;
public class Main
{
public static void main(String[] args) {

float soma= 0;
String nome;
int titulo;
int voto;
Scanner hum = new Scanner(System.in);
for(int v = 1;v <=10;v++)//laco finito v++ = v+1
{
System.out.println(
    
    
    "Insira o seu nome");
	nome = hum.next();
System.out.println("Insira o seu titulo de eleitor");
   titulo = hum.nextInt();
   System.out.println("Insira seu voto");
   voto =  hum.nextInt();
   
    switch(voto)
      {
    case 1:
     System.out.printf("Voce votou no Jose");
     break;
      case 2:
     System.out.printf("Voce votou no Pedro");
     break;
     case 3:
     System.out.printf("Voce votou no Antonio");
     break;
     default:
     
      }  
    }
}

}

Fala Juan tudo certo cara.
Pelo que estou vendo aqui você esta no caminha certo sim.
O que falta para neste caso é você somar o numero de votos de cada candidato.
para que no final do laço você consiga passar uma mensagem informando a quantidade de cada candidato que foi votado.

Tente fazer criando mais algumas variavas para armazenar as votações e caso não conseguir volte aqui para que eu tente te ajudar.

Vamos lá… em relação ao código que você postou, para atender ao quesito 1 da sua lista de exercícios, falta você
a) somar os votos
b) apresentar a mensagem “votação encerrada”
c) apresentar os resultados

Algumas dicas que eu posso te dar, afim de deixar teu resultado mais elegante:

a) ao exibir algo, insira uma nova linha. Você tem duas formas de fazer isso: ou usar PRINTLN ao invés de PRINTF, ou, no final do texto, colocar \n para a quebra de linha.

b) se você tem um número limitado de candidatos, você pode criar variáveis de soma para cada um. Eu, particularmente, criaria um vetor de tamanho N (onde N seria o número de candidatos).

c) uma votação é secreta, então não cabe ao fiscal que está operando o sistema conhecer o voto do eleitor; interessa só o resultado final. Então eu tiraria o SWITCH e apenas apresentaria os nomes (e respectivos votos) ao final.

d) eu colocaria um contador, algo bem simples, para indicar quantos votantes e quantos faltam, ao final do laço FOR. Algo tipo
System.out.println("Votos: " + v + "/10");

e) se for manter o “DEFAULT” no SWITCH, e é sempre bom!, lembre de colocar uma condição para quando o votante colocar outro valor (tipo um contador de brancos e nulos); o plano B para isso é, ao final, somar os votos válidos e subtrair de 10 (quantidade de eleitores) para saber quantos votos foram brancos ou nulos.

O WHILE vai ser tão fácil quanto o FOR. Muda quase nada do teu código.

f) o teu código é pequeno; em um código maior, eu usaria INT ao invés de FLOAT para “soma”, para ocupar menos memória. O uso de float para números int, e uso de printf me parece (posso estar enganado) velhos hábitos trazidos de quem programava em C.

g) para testar o voto e atribuir o candidato, você pode usar o switch ou usar if’s aninhados. O switch me soa mais elegante e mais legível, mas acredito que os if’s facilitam se você precisar ter muitas tarefas dentro daquela condição.

Como o @chiodini comentou, tente fazer o código para aprender. Se tiver maiores dificuldades, venha aqui e especifique, que ajudaremos pontualmente conforme necessidade.

Bons estudos! :smiley:

PS: eu sei que você não estudou isso ainda, mas guarde essa informação para o futuro: sempre que você pedir que um usuário digite algo, sempre envolva isso com um try/catch, para evitar exceções geradas pela digitação errada das coisas.
(Nunca confie no usuário)

1 curtida