Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Jogo de Adivinhação - laços condicionais (Java)

Olá, criei o jogo de adivinhação utilizando o for, gostaria de saber se está dentro das boas práticas usar dois "if" dentro dele. Funciona corretamente, mas fiquei com essa dúvida.

import java.util.Random; import java.util.Scanner;

public class Loop {

public static void main(String[] args) {

    Scanner leia = new Scanner(System.in);

    int tentativas = 0;
    int numero = 0;
    int numAleatorio = new Random().nextInt(100);
    boolean acerto;

    System.out.println("Jogo de Adivinhação:");
    System.out.println("Você tem 5 tentativas para adivinhar o número de 0 a 100 que foi sorteado pelo programa. VALENDO!");

    for (tentativas = 1; tentativas <=5; tentativas++){
        System.out.print("Tentativa " + tentativas + ":");
        numero = leia.nextInt();

        if (numAleatorio > numero){
            System.out.println("Tente outra vez! Dica: o número é MAIOR do que o informado.");
        }
        else if(tentativas == 5){
            System.out.println("Ops, você não acertou! Compre outra ficha, para jogar novamente.");
        }
        else{
            System.out.println("Tente outra vez! Dica: o número é MENOR do que o informado.");
        }

        if(numero == numAleatorio){
            acerto = true;
            System.out.println("PARABÉNS, VOCÊ ACERTOU! O número sorteado foi: " + numAleatorio);
            break;
        }
    }

}

}

2 respostas
solução!

Olá, Emilly!

É perfeitamente aceitável usar múltiplos "if" dentro de um loop "for". No entanto, é importante garantir que a lógica do seu código esteja correta e que ele seja fácil de ler e entender.

No seu código, percebi que você tem um "else if" que verifica se as tentativas são iguais a 5, mas ele só será executado se o número aleatório for menor ou igual ao número informado pelo usuário. Isso pode não ser o comportamento que você deseja. Talvez você queira exibir essa mensagem quando o usuário esgotar todas as tentativas, independentemente do número que ele inseriu.

Além disso, a variável "acerto" é definida, mas não é utilizada em nenhum outro lugar no código. Talvez você possa remover essa variável se não estiver planejando usá-la mais tarde.

Aqui está uma sugestão de como você pode reestruturar seu código:

import java.util.Random;
import java.util.Scanner;

public class Loop {

    public static void main(String[] args) {

        Scanner leia = new Scanner(System.in);

        int tentativas = 0;
        int numero = 0;
        int numAleatorio = new Random().nextInt(100);

        System.out.println("Jogo de Adivinhação:");
        System.out.println("Você tem 5 tentativas para adivinhar o número de 0 a 100 que foi sorteado pelo programa. VALENDO!");

        for (tentativas = 1; tentativas <=5; tentativas++){
            System.out.print("Tentativa " + tentativas + ":");
            numero = leia.nextInt();

            if(numero == numAleatorio){
                System.out.println("PARABÉNS, VOCÊ ACERTOU! O número sorteado foi: " + numAleatorio);
                break;
            } else if (numAleatorio > numero){
                System.out.println("Tente outra vez! Dica: o número é MAIOR do que o informado.");
            } else {
                System.out.println("Tente outra vez! Dica: o número é MENOR do que o informado.");
            }

            if(tentativas == 5){
                System.out.println("Ops, você não acertou! Compre outra ficha, para jogar novamente.");
            }
        }

    }
}

Neste exemplo, o código verifica primeiro se o número do usuário é igual ao número aleatório. Se não for, ele verifica se o número aleatório é maior ou menor que o número do usuário. Por fim, se o usuário não acertou o número após 5 tentativas, ele exibe a mensagem de que o usuário não acertou.

Espero ter ajudado e bons estudos!

Boa noite, tudo bem?

Perfeito, realmente não havia observado esses pontos. Muito obrigada pelo esclarecimento e dicas!