3
respostas

[Dúvida] Else if || Else

Estou tentando entender a linha de raciocínio do meu código, está funcionando, mas quando tento trocar "else if" por "else" o código não compila, e queria entender se isto esta certo, ou o que estou fazendo de errado.

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

public class JogoDaAdivinhacao {
    public static void main(String[] args) {
        Scanner leitor = new Scanner(System.in);
        int numeroGerado = new Random().nextInt(100);
        int tentativas = 0;

        while (tentativas < 5) {
            System.out.println("Digite um número de 0 a 100 e tente adivinhar o número sorteado");
            int numeroDigitado = leitor.nextInt();
            tentativas++;

            if (numeroDigitado == numeroGerado) {
                System.out.println("Parabens! Você acertou o número em " + tentativas + "tentativas");
            } else if (numeroDigitado < numeroGerado) {
                System.out.println("O número digitado é menor que o número sorteado");
            } else if (numeroDigitado > numeroGerado) {
                System.out.println("O número digitado é maior que o número sorteado");
            }
        }
        
        if (tentativas == 5) {
            System.out.println("Que pena, você não acertou, o número era: " + numeroGerado);
        }
    }
}
3 respostas

Bom dia, Windson! Não compila porque acredito que tentou retirar o if mantendo a comparação >> (numeroDigitado > numeroGerado) , se você tirar o if, precisa tirar essa comparação também, ai compila. Testei aqui e funcionou. Trecho de código do autor:

if (numeroDigitado == numeroGerado) {
                System.out.println("Parabens! Você acertou o número em " + tentativas + "tentativas");
            } else if (numeroDigitado < numeroGerado) {
                System.out.println("O número digitado é menor que o número sorteado");
            } else if (numeroDigitado > numeroGerado) {
                System.out.println("O número digitado é maior que o número sorteado");
            }
        }
    Trecho de código alterado por mim:

Se entendi corretamente o seu objetivo, ficará assim o código:

if (numeroDigitado == numeroGerado) {
                System.out.println(numeroDigitado + "aqui");
                System.out.println("Parabens! Você acertou o número em " + tentativas + "tentativas");
            } else if (numeroDigitado < numeroGerado) {
                System.out.println("O número digitado é menor que o número sorteado");
            **} else  {
                System.out.println("O número digitado é maior que o número sorteado");
            }**

Espero que tenha ajudado! Bons estudos!

Então Cláudio, no exercicio em questão, a solução do código acima, consta a comparação do autor que fez o exercicio, só queria entender por que o utilizado em curso funciona e o meu não, qual alteração posso fazer para compilar, pois não estou entendendo bem o erro.

Olha no seu codigo não o break para parar o loop. Talvez que você esteja confundindo que no exemplo do Autor tem um no Texto do Else If , o texto ficou trocado. Veja:

if (numeroDigitado == numeroGerado) { System.out.println("Parabens! Você acertou o número em " + tentativas + "tentativas"); break; // interrompe o loop while - VOCE NAO COLOCOU PARA PARAR QUANDO ACERTAR. } else if (numeroDigitado < numeroGerado) { System.out.println("O número digitado é **menor** que o número sorteado"); // No lugar Menor é MAIOR } else if (numeroDigitado > numeroGerado) { System.out.println("O número digitado é maior que o número sorteado"); // Aqui no Lugar maior e MENOR }