Estou a tentar criar um Simular de um jogo. O computador gera um número aleatório e num máximo de 10 tentativas o usuário tem que
o adivinhar. Em cada iteração tem de indicar se ele estava certo, e se é maior ou menor. O programa termina quando
acertar o número ou se esgotarem as 10 tentativas
Se alguém poder dar umas dicas agradeço…
Já fiz isto mas agora não seu como fazer para comparar a string com o numero gerado
publicclassexercicio2{publicstaticvoidmain(String[]args)throwsIOException{Randomaleatorio=newRandom();intn=aleatorio.nextInt();System.out.println("n = "+n);InputStreamReaderusuario=newInputStreamReader(<ahref="http://System.in">System.in</a>);BufferedReaderinput=newBufferedReader(usuario);System.out.println(“Introduzaumnumero:”);Stringnum=input.readLine();System.out.println("o numero é: "+num);while(){
Pode usar também a classe java.util.Scanner, que possui métodos para ler números inteiros do teclado.
M
MADMAX1
Obrigado…
luistiagos
vc podera fazer o seguinte para isto…
if(n==newInteger(num).intValue()){//o usuario acertou o numero}
ou tbm pode fazer assim:
if(newInteger(n).equals(newInteger(num))){//o usuario acertou o numero}
ou assim…
if(newInteger(n).equals(Integer.parseInt(num))){//o usuario acertou o numero}
mas vale lembrar que antes de converter o valor digitado em inteiro seria interresante vc valida-lo para saber se
o que o usuario digitou e realmente um numero… vai que ele digite um “sdfsdf” ou seila oq… vc recebera um belo de um NumberFormatException…
M
MADMAX1
sim como eu faço para verificar se digitou um numero?
tnaires
Acho que você quis dizer: "Como eu faço para saber se o usuário acertou o número?"
Se não for, peço desculpas. Se for, coloque essa condição no seu while:
enquanto (numero_digitado != numero_sorteado) {
// Obtenha novo número do usuário
}
Abraços
M
MADMAX1
está-me acontecer-me isto se o que digitar não for um numero
java.lang.NumberFormatException
como se resolve isto
desculpem mas eu ainda percebo muito pouco disto…
tnaires
Sugiro que você não se preocupe com isso agora.
Primeiro escreva o seu programa assumindo que todas as entradas serão corretas. Quando tudo estiver funcionando, poste seu código aqui e discutiremos uma forma mais robusta de tratar os erros.
Abraços
M
MADMAX1
Já consegui agora apenas me dá erro java.lang.NumberFormatException se introduzir um numero muito grande…
publicclassexercicio2{publicstaticvoidmain(String[]args)throwsIOException{Randomaleatorio=newRandom();intn=aleatorio.nextInt();System.out.println("n = "+n);intm=1;intacertou=0;while(m!=10&&acertou!=1){InputStreamReaderusuario=newInputStreamReader(<ahref="http://System.in">System.in</a>);BufferedReaderinput=newBufferedReader(usuario);System.out.println(“Introduzaumnumero:”);Stringnum=input.readLine();longi=Integer.parseInt(num);if(i>n){System.out.println("o numero é: "+num+“onumeroémaior”);}else{if(i<n){System.out.println(“onumeroé:“+num+”onumeroémenor”);}else{if(i==n){System.out.println("Acertou no numero: "+num);acertou++;}}
}m++;}}
}
tnaires
NumberFormatException é um erro que você pode tratar através de instruções específicas da linguagem:
try {
// Código passível de erro
} catch (NumberFormatException ex) {
// Tratamento do erro ocorrido
}
Você terá que estudar tratamento de exceções.
M
MADMAX1
ok muito obrigado a todos consegui os meus objectivos…
Marky.Vasconcelos
MADMAX1:
Já consegui agora apenas me dá erro java.lang.NumberFormatException se introduzir um numero muito grande…
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.Random;publicclassexercicio2{publicstaticvoidmain(String[]args)throwsIOException{Randomaleatorio=newRandom();intn=aleatorio.nextInt();System.out.println("n = "+n);intm=1;intacertou=0;while(m!=10&&acertou!=1){InputStreamReaderusuario=newInputStreamReader(System.in);BufferedReaderinput=newBufferedReader(usuario);System.out.println("Introduza um numero:");Stringnum=input.readLine();longi=Integer.parseInt(num);if(i>n){System.out.println("o numero é: "+num+"o numero é maior");}else{if(i<n){System.out.println("o numero é: "+num+" o numero é menor");}else{if(i==n){System.out.println("Acertou no numero: "+num);acertou++;}}}m++;}}}
Só um problema:
Você cria um InputReader para cada vez que ele digitar:
//...while(m!=10&&acertou!=1){InputStreamReaderusuario=newInputStreamReader(System.in);BufferedReaderinput=newBufferedReader(usuario);System.out.println("Introduza um numero:");Stringnum=input.readLine();//...
E não fecha os Streams. se fossem 50 tentativas isso podia até travar a JVM
A solução é criar apenas um objeto e usar quantas vezes forem necessarias:
//...InputStreamReaderusuario=newInputStreamReader(System.in);BufferedReaderinput=newBufferedReader(usuario);while(m!=10&&acertou!=1){System.out.println("Introduza um numero:");Stringnum=input.readLine();longi=Integer.parseInt(num);//...//e depois que sair do whiletry{input.close();}catch(Exceptione){e.printStackTrace();}