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

[Dúvida] Minha versao de solucao para jogo de advinhacao

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


public class NumeroAleatorio {
    public static void main(String[] args) {
        Random random = new Random();
        int numeroAleatorio = random.nextInt(100);
        Scanner numero = new Scanner(System.in);

        System.out.println("Tente advinhar um numero entre 1 e 100: ");
        for (int tentativas = 4; tentativas >= 0; tentativas--) {
            int chute = numero.nextInt();
            System.out.println("Seu numero e o " + chute);

            if (chute == numeroAleatorio) {
                System.out.println("Parabens! Voce acertou! O numero aleatorio realmente e " + numeroAleatorio);
                break;
            } else if (chute > numeroAleatorio) {
                System.out.println("Infelizmente seu numero e maior do que o numero aleatorio.");
                System.out.println("Sobraram " + tentativas + " tentativas.");
            } else {
                System.out.println("Infelizmente seu numero e menor do que o numero aleatorio.");
                System.out.println("Sobraram " + tentativas + " tentativas.");
            }
        }

    }
}
3 respostas

Oi, Estudante! Como vai?

Obrigada por compartilhar seu código.

Você estruturou bem o jogo, com for, Scanner e Random, mas ele precisa de alguns ajustes para funcionar conforme o desafio pede. A contagem de tentativas está invertida, e o número aleatório pode começar em 0, enquanto o enunciado fala de 1 a 100.

E, adicionar uma mensagem final caso o número não seja adivinhado, pra deixar o projetinho mais completo.

Veja o código com essas melhorias aplicadas:


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

public class NumeroAleatorio {
    public static void main(String[] args) {
        Random random = new Random();
        int numeroAleatorio = random.nextInt(100) + 1; // garante número entre 1 e 100
        Scanner numero = new Scanner(System.in);
        int tentativas = 0;
        int chute = 0;

        System.out.println("Tente adivinhar um numero entre 1 e 100: ");
        
        while (tentativas < 5) {
            chute = numero.nextInt();
            tentativas++;
            System.out.println("Seu numero e o " + chute);

            if (chute == numeroAleatorio) {
                System.out.println("Parabens! Voce acertou! O numero aleatorio era " + numeroAleatorio);
                break;
            } else if (chute > numeroAleatorio) {
                System.out.println("Seu numero e maior que o numero aleatorio.");
            } else {
                System.out.println("Seu numero e menor que o numero aleatorio.");
            }

            System.out.println("Tentativas restantes: " + (5 - tentativas));
        }

        if (chute != numeroAleatorio) {
            System.out.println("Voce nao acertou o numero em 5 tentativas. O numero era: " + numeroAleatorio);
        }
    }
}

Esse código mantém a sua estrutura original e adiciona as melhorias necessárias para atender ao desafio.

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

Obrigada! Refiz o codigo usando o for mesmo. Ou com o while e melhor?

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


public class NumeroAleatorio {
    public static void main(String[] args) {
        Random random = new Random();
        int numeroAleatorio = random.nextInt(100) + 1;
        Scanner numero = new Scanner(System.in);
        int chute = 0;

        System.out.println("Tente advinhar um numero entre 1 e 100 em ate 5 tentativas: ");
        int tentativas;
        for (tentativas = 1; tentativas <= 5; tentativas++) {
            chute = numero.nextInt();
            if (chute == numeroAleatorio) {
                System.out.println("Parabens! Voce acertou! O numero aleatorio realmente e " + numeroAleatorio);
                break;
            } else if (chute > numeroAleatorio) {
                System.out.println("Infelizmente seu numero e maior do que o numero aleatorio.");
            } else {
                System.out.println("Infelizmente seu numero e menor do que o numero aleatorio.");
            }
            System.out.println("Tem mais " + (5 - tentativas) + " tentativas.");
        }
        if(chute != numeroAleatorio) {
            System.out.println("Suas tentativas acabaram. O numero era " + numeroAleatorio);
        }

    }
}
solução!

Oi, Estudante!

Sobre sua última dúvida: usar for ou while, qual é melhor nesse caso?

Na prática, os dois funcionam bem, e a escolha depende de como você quer organizar a lógica. No seu caso, como você já sabe quantas tentativas terá (5 no total), o uso do for é mais indicado, porque o número de repetições já está definido — o que torna seu código mais direto e fácil de ler.

Ambas versões são válidas, então pode seguir com aquela que fizer mais sentido pra você.

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