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

[Sugestão] Faça como eu fiz: jogo de adivinhação

Queria saber se teria como eu utilizar o tentativas como int e fazer o casting dele pra string quando for escrever a mensagem de tentativas, tentei e não consegui, só consegui com o tipo double. Gostei do desafio pq fui atrás da classe Random pra saber como ela funciona. Teria como escrever uma mensagem pra quando o numero de tentativas fosse 5 e a pessoa não acertou o número. Ademais, quero saber se minha lógica e o mode de construir o loop estão ideais, pelos meus testes e análise eu não vi nada que diverge da lógica do instrutor, aqui está o código:

//Crie um programa que simula um jogo de adivinhação, que deve gerar um número aleatório entre 0 e 100
// e pedir para que o usuário tente adivinhar o número, em até 5 tentativas.
// A cada tentativa, o programa deve informar se o número digitado pelo usuário é maior ou menor do que o número gerado.

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

public class NumberGuesser {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);//Scanner lê as entradas do sistema.
        int numeroMaximo = 100;//define o numero bound (limite) a ser gerado
        double tentativas = 0;//inicia o número de tentativas como 0
        Random random = new Random();/* criando o objeto da classe Random, que gera número pseudoaleatório
         do tipo int, maior que ou igual a zero e menor que o valor de bound. */
        int numberGerado = random.nextInt(numeroMaximo+1);
        //o +1 para considerar o 100, e não somente os numeros < 100
        System.out.println(numberGerado);//ter o numero gerado para depuração
        System.out.println("Bem-Vindo ao Number Guesser! Você tem 5 tentativas para descobrir um número de 0 a 100");

        for(int i = 0; i<5; i++) {//Criando loop para controlar as tentativas e
            // ler o numero escolhido e comparar com o numero gerado

            System.out.println("Digite um número de 0 a 100: ");
            int numeroEscolhido = scanner.nextInt();//defino o scanner para ler o proximo valor inteiro que for inputado

            if (numeroEscolhido > numberGerado) {
                System.out.println("O número escolhido é maior que o número gerado");

            }
            else if (numeroEscolhido==numberGerado){//caso a pessoa acerte

                System.out.println("Parabéns! Você descobriu o número gerado!!");
                break;
            }
            else{
                System.out.println("O número escolhido é menor que o número gerado");
            }
            tentativas++;//incrementa as tentativas a cada loop
            String msgtentativas;
            if(tentativas == 1) {
                msgtentativas = String.format("Já se foi %f tentativa", tentativas);
            }else{
                msgtentativas = String.format("Já se foram %f tentativas", tentativas);
            }
            System.out.println(msgtentativas);


        }


    }
}
2 respostas

Olá, Meu nome e João Pedro, e teria sim como vc utilizar o tentativas como int! Basta somente vc tipar a variavel "tentativa" como int e colocar %d ao inves de %f para exibir os dados do tipo int, o %f serve para exibir dados do tipo float e doble!

Amostra:

int tentativas = 0;

if(tentativas == 1) {
                msgtentativas = String.format("Já se foi %d tentativa", tentativas);
            }else{
                msgtentativas = String.format("Já se foram %d tentativas", tentativas);
            }

Espero ter ajudado!!

solução!

Opa, cara! Valeu, João! Não sabia que tinha esse tipo de formatação.