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
public class exercicio2 {
public static void main(String[] args) throws IOException {
Random aleatorio= new Random();
int n= aleatorio.nextInt();
System.out.println("n = "+n);
InputStreamReader usuario = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader (usuario);
System.out.println(“Introduza um numero:”);
String num = input .readLine();
System.out.println("o numero é: "+num);
while (){
if (n == new Integer(num).intValue()) {
//o usuario acertou o numero
}
ou tbm pode fazer assim:
if (new Integer(n).equals(new Integer(num))) {
//o usuario acertou o numero
}
ou assim…
if (new Integer(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…
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
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
public class exercicio2 {
public static void main(String[] args) throws IOException {
Random aleatorio= new Random();
int n= aleatorio.nextInt();
System.out.println("n = "+n);
int m=1;
int acertou=0;
while(m!=10 && acertou!=1){
InputStreamReader usuario = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader (usuario);
System.out.println(“Introduza um numero:”);
String num = input .readLine();
long i = 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++;
}
}
[quote=MADMAX1]Já consegui agora apenas me dá erro java.lang.NumberFormatException se introduzir um numero muito grande…
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
public class exercicio2 {
public static void main(String[] args) throws IOException {
Random aleatorio= new Random();
int n= aleatorio.nextInt();
System.out.println("n = "+n);
int m=1;
int acertou=0;
while(m!=10 && acertou!=1){
InputStreamReader usuario = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader (usuario);
System.out.println("Introduza um numero:");
String num = input .readLine();
long i = 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++;
}
}
}
[/quote]
Só um problema:
Você cria um InputReader para cada vez que ele digitar:
//...
while(m!=10 && acertou!=1){
InputStreamReader usuario = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader (usuario);
System.out.println("Introduza um numero:");
String num = 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:
//...
InputStreamReader usuario = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader (usuario);
while(m!=10 && acertou!=1){
System.out.println("Introduza um numero:");
String num = input .readLine();
long i = Integer.parseInt(num);
//...
//e depois que sair do while
try{
input.close();
}catch(Exception e){ e.printStackTrace(); }