Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Código da Aula - Advinhação [ e dúvida]

Segue o código do jogo que, creio, cobriu todas as possibilidades.

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

public class jogoAdvinhacao {
    public static void main(String[] args) {
        int numAleatorio = new Random().nextInt(100);
        int i = 0;
        int chute = 0;
        String rodada = "";

        System.out.println("JOGO DA ADVINHAÇÃO:");
        System.out.println("=======================================");
        System.out.println("Você terá 5 tentativas para advinhar o número escolhido, de 0 a 100.");

        while (chute != numAleatorio && i < 5) {

            switch (i) {
//                switch para adaptar a frase ao número de rodada correta.
                case 0:
                    rodada = "primeiro";
                    break;
                case 1:
                    rodada = "segundo";
                    break;
                case 2:
                    rodada = "terceiro";
                    break;
                case 3:
                    rodada = "quarto";
                    break;
                case 4:
                    rodada = "último";
                    break;
            }

            System.out.print(String.format("Digite seu %s chute: ", rodada));
            Scanner leitura = new Scanner(System.in);
            chute = leitura.nextInt();

            if (i < 5 && chute == numAleatorio) {
                System.out.println(String.format("Parabéns, você acertou o número no %s chute!", rodada));
            } else if (i < 4 && chute < numAleatorio) {
                System.out.println("Você errou! Tente um número maior.");
            } else if (i < 4 && chute > numAleatorio) {
                System.out.println("Você errou! Tente um número menor.");
            } else {
                System.out.println("Você errou, e acabaram suas chances. ='(");
                System.out.println("Que pena, você perdeu!");
                System.out.println(String.format("O número era %d.", numAleatorio));
            }
            i++;
        }
    }
}

Dúvida: para que esse código fosse "rodável", tive que inicializar as variáveis i, chute e rodada. Em quais situações elas podem, simplesmente, ser declaradas; e em quais outras há a necessidade de serem inicializadas com algum valor?

1 resposta
solução!

Olá Diego!

Ótima pergunta! A necessidade de inicializar as variáveis depende do tipo da variável e do contexto em que ela é utilizada.

No caso das variáveis do tipo primitivo, como int, boolean, double, entre outros, é obrigatório inicializá-las antes de utilizá-las. Isso ocorre porque essas variáveis não possuem um valor padrão definido pelo sistema. Portanto, se você não atribuir um valor inicial a elas, ocorrerá um erro de compilação.

Já no caso das variáveis do tipo referência, como String, Scanner, Random, entre outros, não é obrigatório inicializá-las antes de utilizá-las. Isso ocorre porque essas variáveis possuem um valor padrão definido pelo sistema. Por exemplo, no código que você postou, a variável rodada é inicializada com uma string vazia, mas se você não fizesse essa inicialização, o valor padrão seria null.

Espero ter ajudado e bons estudos!