Caros, boa noite.
Estou aprendendo a desenvolver Java e num determinado exercício ocorreu um looping infinito e eu não entendi exatamente o motivo.
@SuppressWarnings("empty-statement")
public static void main(String[] args) {
// TODO code application logic here
Scanner teclado = new Scanner (System.in);
int opc = 0;
int compv = 0;
int userv = 0;
int emp = 0;
int usuario;
System.out.println("*****Jokey Poh!*****" + "\n");
do{
System.out.println("Informe um número de acordo com a opção desejada" + "\n");
System.out.println("Pedra = 0, papel = 1, tesoura = 2" + "\n");
try{
double aleatorio = Math.random();
int computador = (int) ( 0 + aleatorio * (3 - 0));
if (computador == 3){
computador -= 1;
}
usuario = teclado.nextInt();
switch (usuario){
case 0:
case 1:
case 2:
System.out.println("*****Resultado*****" + "\n");
System.out.println("Ecolha do Computador: " + computador);
System.out.println("Escolha do Usuário: " + usuario);
if (usuario == 0 && computador == 1){
System.out.println("O Computador é o vencedor." + "\n");
compv += 1;}
if (computador == 0 && usuario == 1){
System.out.println("Parabens ! Você venceu! " + "\n");
userv += 1;}
if (computador == 0 && usuario == 2){
System.out.println("O Computador é o vencedor. "+ "\n");
compv += 1;}
if (usuario == 0 && computador == 2){
System.out.println("Parabens ! Você venceu! " + "\n");
userv += 1;}
if (usuario == 1 && computador == 2){
System.out.println("O Computador é o vencedor. " + "\n");
compv += 1;}
if (computador == 1 && usuario == 2){
System.out.println("Parabens ! Você venceu! " + "\n");
userv += 1;}
if (computador == 1 && usuario == 1){
System.out.println("Empatou!" + "\n");
emp += 1;}
if (computador == 2 && usuario == 2){
System.out.println("Empatou!" + "\n");
emp += 1;}
if (computador == 0 && usuario == 0){
System.out.println("Empatou!" + "\n" );
emp ++;}
break;
default:
System.out.println("Informe uma opção Valida" + "\n");
break;
}
System.out.println("*****PLACAR*****");
System.out.println("Computador: " + compv);
System.out.println("Você: " + userv);
System.out.println("Empates: " + emp);
System.out.println("\n");
System.out.println("Deseja Jogar mais uma vez ? Então Digite '1' !");
opc = teclado.nextInt();
}
catch (java.util.InputMismatchException e){
System.out.println("Informe um valor numérico");
}
}while (opc == 1);
}
}
Como podem ver, eu criei um "joguinho" para treinar looping, try cath, if, etc.É mais para praticar mesmo, mas o lopping não para sempre que executo e ocorre a captura de uma exceção. Exemplo: Onde pede para eu digitar uma dos três números, caso eu digite uma letra ocorre um lopping, mas caso eu aperte um número invalido o looping não ocorre.
Poderiam me ajudar ?