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

Código do jogo de adivinhação - preciso de conselhos.

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

public class Adivinhacao {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int numero = new Random().nextInt(10);
        int chute =0;
        int tentativas = 0;

        while (tentativas < 5){
            if (chute != numero){
            System.out.println("Digite seu chute: ");
            chute = sc.nextInt();
        }else{
                System.out.println("Parabéns você acertou!");
            }
            if (chute > numero){
                System.out.println("O numero é menor que o chute");
            }else if (chute < numero){
                System.out.println("O numero é maior que o chute");
            }
            tentativas++;


        }

    }
}

Esse código está sendo executado corretamente, porém, sinto que há melhorias a serem feitas. Não acho que usei o if dentro do while corretamente. Por favor, me ajudem.

2 respostas
solução!

Seu código está bem estruturado para um jogo de adivinhação básico, mas há algumas melhorias que podem ser feitas para torná-lo mais eficiente e claro. Vou sugerir algumas modificações:

  1. Mensagem de Acerto dentro do Loop: Atualmente, a mensagem de acerto "Parabéns você acertou!" pode ser exibida múltiplas vezes se o usuário acertar o número antes da quinta tentativa, devido à sua posição no loop. Isso acontece porque, mesmo após acertar, o loop continua até completar as 5 tentativas.

  2. Quebra do Loop após Acerto: Se o usuário acertar o número, o jogo deve idealmente terminar imediatamente, sem pedir mais entradas.

  3. Estrutura dos Condicional: Para melhorar a clareza, você pode reestruturar o if para verificar primeiro se o usuário acertou, e então, usar um else para as dicas.

Vamos a uma versão revisada do seu código com essas melhorias:

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

public class Adivinhacao {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int numero = new Random().nextInt(10) + 1; // Gera um número entre 1 e 10
        int chute = -1; // Inicializa chute com um valor fora do intervalo possível
        int tentativas = 0;

        System.out.println("Tente adivinhar o número que estou pensando, entre 1 e 10!");

        while (tentativas < 5) {
            System.out.println("Digite seu chute: ");
            chute = sc.nextInt();

            if (chute == numero) {
                System.out.println("Parabéns, você acertou!");
                break; // Sai do loop se o usuário acertar
            } else if (chute > numero) {
                System.out.println("O número é menor que o chute.");
            } else {
                System.out.println("O número é maior que o chute.");
            }
            tentativas++;

            // Mensagem de derrota após todas as tentativas
            if (tentativas == 5) {
                System.out.println("Que pena, suas tentativas acabaram. O número era " + numero + ".");
            }
        }
    }
}

Principais Mudanças:

  • O jogo agora termina imediatamente se o usuário acertar, graças ao break.
  • A mensagem de acerto só será exibida uma vez.
  • Adicionada uma mensagem ao final das tentativas para informar o usuário do número correto caso ele não acerte.
  • O valor inicial de chute agora é -1 para garantir que ele não seja igual a numero antes da primeira entrada do usuário.
  • O número gerado agora está entre 1 e 10, que é um pouco mais intuitivo para o usuário.

Essas mudanças tornam o código mais eficiente e a experiência do usuário mais fluida e compreensível.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Muito obrigada!!