1
resposta

[Projeto] Jogo de adivinhação - Dúvidas quanto diferenças

Boa tarde pessoal. Acabo de realizar o exercício de jogo da adivinhação, com o seguinte código:

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

public class AcerteONumero {
    
    public static void main(String[] args){
        Scanner leitor = new Scanner(System.in);
        int numeroInteiro = new Random().nextInt(100);
        int numeroTentativas = 0;
        int numeroEscolhido = 0;

        while (numeroTentativas < 5) {
            System.out.println("Escolha um número de 0 a 100:");
            numeroEscolhido = leitor.nextInt();
            numeroTentativas++;

            if (numeroEscolhido < numeroInteiro) {
                System.out.println("O número secreto é maior do que o número escolhido. Tente novamente, você tem " + (5 - numeroTentativas) + " tentativas.");
            } else if (numeroEscolhido > numeroInteiro) {
                System.out.println("O número secreto é menor que o número escolhido. Tente novamente, você tem " + (5 - numeroTentativas) + " tentativas.");
            } else {
                System.out.println("Parabéns! Você Acertou");
                break;
            }

            if (numeroTentativas == 5) {
                System.out.println("Você excedeu o número de tentativas. O número era " + numeroInteiro + ". Tente novamente");
            }
        }
    }
}

Fiquei em dúvida quanto algumas diferenças em relação ao códigosugerido na aula.

1° - Notei que ao rodar o código da aula, o número digitado por mim no console fica na mesma linha que a frase de solicitação, enquanto no meu código ele só aceita na linha de baixo. Qual o motivo?

EX:
Código da aula:
Escolha um número de 0 a 100: 50

Código feito por mim:
Escolha um número de 0 a 100:
50

2° - Qual a diferença entre inserir o "break" logo no inicio, como feito no resultado, e inserir por último, como feito por mim?
3° - Quando se excede as tentativas e não se acerta o número, em ambos os códigos, ele ainda sim imprime a linha de dica sobre o número.

EX:
Digite um número entre 0 e 100: 48
O número digitado é menor que o número gerado.
Você não conseguiu acertar o número em 05 tentativas. O número era: 97

Como posso não imprimir a dica caso o jogo seja perdido?

Agradeço o tempo de quem me responder. Obrigada.

1 resposta

Oi, Ana! Como vai?

Do jeito que você explicou, seu jogo ficou bem organizado: você controlou as tentativas com while, comparou o chute com o número secreto e já mostrou quantas chances restam.

Sobre suas dúvidas:

(1) a quebra de linha acontece porque você usa System.out.println(...), que imprime e pula linha; na aula, provavelmente foi usado System.out.print(...), que imprime sem pular linha.

(2) O break funciona igual em qualquer ponto do else: ao acertar, ele sai do while; a diferença é só de legibilidade (muita gente prefere imprimir a mensagem e logo sair).

(3) Para não imprimir a dica quando perder, uma dica interessante para o futuro é usar um boolean (por exemplo acertou) para decidir se mostra dica ou mensagem final:


boolean acertou = false;

while (numeroTentativas < 5) {
  System.out.print("Escolha um numero de 0 a 100: ");
  int numeroEscolhido = leitor.nextInt();
  numeroTentativas++;

  if (numeroEscolhido == numeroInteiro) {
    System.out.println("Parabens! Voce acertou");
    acertou = true;
    break;
  }

  if (numeroTentativas < 5) {
    if (numeroEscolhido < numeroInteiro) {
      System.out.println("O número secreto é maior.");
    } else {
      System.out.println("O número secreto é menor.");
    }
  }
}

if (!acertou) {
  System.out.println("Você excedeu o número de tentativas. O número era " + numeroInteiro);
}

Esse código usa acertou para saber se o jogo terminou com sucesso e só imprime a dica enquanto ainda há tentativas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!