Ajuda em exercicio

3 respostas
henriquelo

Galera preciso de uma ajudinha!!! e pra maioria vai ser super facil!!!

Vou colocar o enunciado pra ficar claro:

  1. Escreva um aplicativo que joga ?adivinhe o número? como a seguir: Seu programa escolhe o número a ser adivinhado selecionando um inteiro aleatório no intervalo de 1 a 1000. O aplicativo exibe a mensagem ?Sugira um número entre 1 e 1000?. O jogador insere uma primeira suposição. Se o palpite do jogador estiver incorreto, se programa deve exibir ?Muito Alto. Tente Novamente? ou ?Muito Baixo. Tente Novamente?. Para ajudar o jogador a ?zerar? mediante uma resposta correta, o programa deve solicitar ao usuário o próximo palpite. Quando o usuário insere a resposta correta, exiba ?Parabéns, você adivinhou o número!? e permita que o usuário escolha se quer jogar novamente.

  2. Modifique o programa do Exercício anterior para contar o número de suposições que o jogador faz. Se o número for 10 ou menos, exiba a mensagem ?Você sabe o segredo ou tem muita sorte? se o jogador adivinhar o número em mais de 10 tentativas exiba ?Você é capaz de fazer melhor?.


Coloquei o enunciado do primeiro exercicio, mas o segundo é o que eu preciso fazer!!!

Segue o meu código (que está executando, mas não está recomeçando após as 10 tentativas erradas):


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


public class JogoDeAzar {
	
	private Random random;
	private int nro;
	private int nroLido;
    private int continuar;
	private int cont;
	private Scanner input = new Scanner(System.in); 

	public JogoDeAzar() {
    
    }
    public void executarJogo(){
		
		random = new Random();
		nro = random.nextInt(16);
		
		cont = 0;
		
		do{
			lerPalpite();
			verifPalpite();
		    cont++;
		    
		}while((nro != nroLido) && (cont <= 10));
		
		System.out.println("Você é capaz de fazer melhor \n\n");
		
		jogarNovamente();
			
	}
	
	public void lerPalpite(){
		
		System.out.println("Sugira um número entre 1 e 15:");
		nroLido = input.nextInt();
	}
	
	public void verifPalpite(){
		
		if (nroLido == nro){
			System.out.println("Você sabe o segredo ou tem muita sorte");
		}else if (nroLido < nro){
			System.out.println("Muito Baixo. Tente Novamente");
		}else {
			System.out.println("Muito Alto. Tente Novamente");	
		}
		
	}
	
	public void jogarNovamente(){
		
		System.out.println("Deseja jogar novamente - 1 ou 0");
		continuar = input.nextInt();
		
		if(continuar == 1){
			
			executarJogo();
		}
		else{
			
			System.out.println("JOGO FINALIZADO");
		}
	}
}

Quem puder me ajudar eu agradeço!!!

OBS: consegui executar o código como exigido, o problema que está ocorrendo é: mesmo ao acertar o numero está aparecendo a mensagem “System.out.println(“Você é capaz de fazer melhor \n\n”);”, que não deveria!!!

Como faço para consertar esse erro!?!?!?!

3 Respostas

T

Olhando seu programa, você não impôs nenhuma condição para imprimir esta linha:

System.out.println("Você é capaz de fazer melhor \n\n");

Ou seja, ela sempre será apresentada. Você não pös essa linha no lugar errado?

bcartaxo

Concordo com o kra ai de cima. Acho q vc se atrapalhou um pouco na condição do while e no local onde botou a saída. Parei de ler o código qd cheguei na condição do while, vou te dar um asugestão e vc ver se condiz com oq vc quer.

A codinção do while só deve avaliar se o núemro do kra é igual ao número gerado. Uma solução plausível é após o while vc ter um if…else em q agora sim vc testaria se o usuario tentou menos ou mais de 10 vezes. Acredito q com essa abordagem o método tentar novamente n se faz necessário, seu while só deve morrer qd o usuário acertar o valor, caso contrário ele vai ficar sempre repetindo a sáida incômoda. Não sei se fui claro, asm é puraí.

M

while((nro != nroLido) && (cont <= 10));

Você pode mudar o seu 10 para um numero razoavel de tentativas.

Ou mesmo retirar esta condição

while( nro != nroLido );

Assim vc vai excutar até digitar o numero igual

[]s

Criado 8 de maio de 2007
Ultima resposta 8 de mai. de 2007
Respostas 3
Participantes 4