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

Dificuldade em fazer o programa funcionar corretamente

Olá, Pessoal! Me chamo Cristian e atualmente estou fazendo a trilha de programação Java. Recentemente, para praticar e ampliar meus conhecimentos, resolvi fazer o desafio do jogo de adivinhação proposta aqui mesmo na plataforma, no entanto, estou tento algumas problemas com a forma em que o interpretador do Java se comporta sob as minhas instruções.

O programa deveria selecionar um número entre 0 e 100 e oferecer 5 tentativas para o usuário tentar acertar. Em seguida, dizer se o número que a maquina escolheu era maior ou menor que o número digitado pelo usuário. O problema é: ele só repete infinitamente que o número da maquina é menor. Não importando se você digitar 0 ou até mesmo números negativos, ele sempre diz que o número da maquina é menor. Como resolvo isso?

**Vocês podem verificar o código que eu escrevi no meu GitHub: ** GitHub

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

10 respostas

Não entendi a sua dúvida

Se vc digitar um número negativo, é claro que ele sempre será menor que o número da máquina

Então, Luiz: o problema é que o número NUNCA é maior, entende? Eu posso digitar 10, 20, 30 ou -20, -100 e por aí vai. É impossível acertar o número definido pela maquina. Ele sempre diz que é menor que o número que a gente digita. Qualquer número, não apenas negativos.

Eu testei aqui pegando seu repositório do git e tá funcionando normalmente.!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Anderson, eu já reescrevi e testei esse programa tantas vezes, mas, pra mim, não funciona kkkk. Juro pra você. Acha que pode ser um problema no meu JDK?

Mano pior que eu não sei te dizer....eu não tenho experiência com Java...baixei por curiosidade pra ver se não era algum erro na lógica, pq tive um problema parecido quando fiz esse desafio em javascript. A primeira vez que testei fui no aleatório digitando os números e as mensagens foram aparecendo normalmente. Quando digitei um numero menor ele imprimiu a mensagem certa e vice-versa e quando estourei as tentativas a mensagem também apareceu certinho. Então coloquei pra imprimir o número randômico escolhido pela máquina pra testar o caso de acerto e apareceu a mensagem certinha.

Entendo, Anderson! No final, o que importa é o que vocês (usuários) estejam conseguindo usar né? kkkkkkk Agradeço mesmo assim pela atenção :)

solução!

Insira o número gerado na pergunta para realizar o teste.

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

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int machineNumber = new Random().nextInt(101);
        int yourNumber = 0;
        int attempts = 0;

        while (attempts < 5) {
            System.out.println("Digite um número entre 0 e 100 (" + machineNumber + ")");
            yourNumber = input.nextInt();
            attempts++;

            if (yourNumber == machineNumber) {
                System.out.println("Parabéns! O número que você escolheu corresponde ao número escolhido pela maquina, que é:  " + machineNumber);
                break;
            } else if (yourNumber > machineNumber) {
                System.out.println("O número que você escolheu é maior que o número escolhido pela maquina.");
            } else {
                System.out.println("O número que você escolheu é menor que o número escolhido pela maquina.");
            }
        }
        if (attempts == 5 && yourNumber != machineNumber) {
            System.out.println("Você excedeu o número de tentativas. Tente novamente.");
        }
    }
}

Compilador online

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Obrigado, Luiz! Agora está funcionando perfeitamente. Você poderia me dizer o que ocorreu? Por que aumentar o número randômico em apenas uma unidade resolveu o problema do programa?

Oi, Cristian

Aumentei para 101, pois o intervalo era de 0 a 100 (101 números possíveis)

O programa não tinha problema!

Entendo, Luiz. Aparentemente, o problema era só o meu interpretador mesmo. Assim que alterei o new Random pra 101, ele voltou a funcionar normalmente. Nem precisei pedir pra mostrar na tela que número a maquina escolheu. Ele apenas seguiu o fluxo correto de instruções. Mas, de qualquer forma, obrigado! Agradeço pela atenção.