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

[Projeto] Meu projeto.

Tentei criar um parâmetro para validar o número informado mas não soube como fazer a comparação de um 'int' != 'NaN'.

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

public class JogoAdivinhacao {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        // permite escolher até que número pode ser sorteado.
        System.out.println("Digite o número maxímo a ser sorteado.");
        int numeroMaximo = entrada.nextInt();
        // permite escolher a quantidade maxíma de tentativas.
        System.out.println("Digite o número de tentativas.");
        int tentativas = entrada.nextInt();
        int sorteio = new Random().nextInt(numeroMaximo);
        int chute = 0;

        for (int i = 1; i <= 5; i++) {
            System.out.println("Chute um número entre 0 e " + numeroMaximo + ", tentativa " + i + " de " + tentativas + ".");
            chute = entrada.nextInt();
            // não permite continuar se o número informado não estiver dentro da margem valida.
            while (chute < 0 || chute > numeroMaximo) {
                System.out.println("O número informado deve ser entre 0 e " + numeroMaximo + "!");
                chute = entrada.nextInt();
            }
            if (chute == sorteio) {
                System.out.println("Você acertou!!! O número sorteado foi " + sorteio + ".");
                break;
            } else if (chute < sorteio) {
                System.out.println("Número informado é menor que o sorteado!");
            } else {
                System.out.println("Número informado é maior que o sorteado!");
            }

        }

        if (chute != sorteio) {
            System.out.println("Você errou, o número sorteado foi " + sorteio + ".");
        }

    }
}
2 respostas

uma pequena correção no "for()", faltou aplicar o "i <= tentativas".

 for (int i = 1; i <= tentativas; i++)
solução!

Olá Lucas, tudo bem com você?

Seu código está correto e atende a proposta. O NaN (Not a Number) pode ser interpretado como um valor indefinido ou irrepresentável, e é o resultado de operações indefinidas de ponto flutuante como, por exemplo, dividir zero por zero (0/0). Já o tipo int é um tipo primitivo. O NaN é utilizado em tipos de ponto flutuante, como o 'double' e o 'float'. Exemplo:

class Main {
  public static void main(String[] args) {
      double x = 0.0/ 0.0;
      double y = 10.0;
      System.out.println("A variável X é NaN? " + Double.isNaN(x));
      System.out.println("A variável Y é NaN? " + Double.isNaN(y));
  }
}

Resultado:

A variável X é NaN? true
A variável Y é NaN? false

Portanto, você não precisa se preocupar com a comparação 'int' != 'NaN'. Além disso, para caso queira se aprofundar sobre NaN em Java, recomendo a leitura deste artigo que desmitifica este valor retornado em casos específicos de operações.

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!