Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] duda en java...

Estas en el tema de duda en java... en el foro de Java en Foros del Web. buenas a todos. soy totalmente novato en esto de programar. estoy haciendo un curso de java y tengo una duda con un ejercicio que estoy ...
  #1 (permalink)  
Antiguo 20/03/2016, 05:42
Avatar de chosbuster  
Fecha de Ingreso: marzo-2016
Mensajes: 10
Antigüedad: 8 años, 1 mes
Puntos: 0
duda en java...

buenas a todos. soy totalmente novato en esto de programar. estoy haciendo un curso de java y tengo una duda con un ejercicio que estoy haciendo. el unico error que creo que me queda (a funcionamiento del programa en si, que supongo que la estructura de la clase y la ordenacion dejara bastante que desear;)) es el siguiente.

despues de fallar una de las preguntas, y el programa me pregunta si quiero volver a jugar, si le doy a "si" no hay problema, pero si le doy a "no", en vez de soltar el mensaje "Tu te lo pierdes....LOSER" y finalizar la aplicacion, me vuelve a salir el numero de intentos restantes y me pide que introduzca una respuesta....de ahi no sale. haciendo un debug he visto que despues de mostrar el mensaje "Tu te lo pierdes....LOSER", salta al "WHILE" que esta en "nucleo()" (y por eso me sale lo de intentos y me pide introducir datos de nuevo).

por mas que he mirado no se porque se va a ese WHILE. gracias de antemano

import java.util.Scanner;

/**
*
* @author Chosbuster
*/
public class PatataCaliente {
public static String preguntas[] = new String[10];
public static int respuesta[] = new int[10];
public static final int cantidadPreguntas = 10;
public static int valorAleatorio;
public static int respuestaRecibida;
public static boolean acierto;
public static int intentos = 5;

/**
* Metodo en el que el jugador decide si echar o no una partida
*/
public static void aceptarONo() {
String decision;
Scanner siONo = new Scanner(System.in);
decision = siONo.next();
if (decision.equals ("y")) {
System.out.println("Muy bien, ahi va la pregunta:");
preguntaAleatoria();
imprimirPregunta();
nucleo();
}
if (decision.equals ("n")) {
System.out.println("Tu te lo pierdes....LOSER");
}
while (!decision.equals("y") && !decision.equals("n")) {
System.out.println("Escribe una respuesta valida:");
PatataCaliente.aceptarONo();
}
}

/**
* Metodo en el que se enumeran las frases que indican el funcionamiento del
* juego
*/
public static void explicacionPatataCaliente() {
System.out.println("BIENVENIDO A....PATATA CALIENTE!!!");
System.out.println("De que va esto?..muy facil..o quizas no tanto ;)");
System.out.println("Debes adivinar la respuesta a una pregunta. La");
System.out.println("respuesta siempre sera numerica (año,cantidad,etc).");
System.out.println("Dispones de 5 intentos antes de que la patata te");
System.out.println("explote en la cara. Te atreves?");
System.out.println("");
System.out.println("y = SI n = NO");
}

/**
* Listado de preguntas y sus respuestas
*/
public static void listaPreguntasRespuestas() {
preguntas[0] = "¿En que año piso Neill Armstrong la Luna? ";
respuesta[0] = 1969;
preguntas[1] = "¿En que año empezo la Segunda Guerra Mundial? ";
respuesta[1] = 1939;
preguntas[2] = "¿En que año gano España su unico Mundial de futbol? ";
respuesta[2] = 2010;
preguntas[3] = "¿Cuantos centimetros mide Michael Jordan? ";
respuesta[3] = 198;
preguntas[4] = "¿Cuantas medallas de oro gano España en Barcelona 92? ";
respuesta[4] = 13;
preguntas[5] = "¿Que edad tenia Tutankhamon cuando murio? ";
respuesta[5] = 19;
preguntas[6] = "¿En que año se firmo la declaracion de independencia"
+ "de Estados Unidos? ";
respuesta[6] = 1776;
preguntas[7] = "¿En que año se lanzo el Apollo XIII? ";
respuesta[7] = 1970;
preguntas[8] = "¿Cuantos satelites tiene Jupiter? ";
respuesta[8] = 67;
preguntas[9] = "¿En que año se estrello el OVNI de Roswell? ";
respuesta[9] = 1947;

}
/**
* Metodo para obtener un valor aleatorio a usar en la array de preguntas
* @return
*/
public static int preguntaAleatoria() {
double random = Math.random();
int preguntaAzar = (int) (random * cantidadPreguntas);
return valorAleatorio = preguntaAzar;
}
/**
* Metodo para mostrar en pantalla la pregunta aleatoria seleccionada
*/
public static void imprimirPregunta () {
System.out.println(preguntas[valorAleatorio]);
}

public static boolean compararResultado(){
if (respuestaRecibida > respuesta[valorAleatorio]) {
System.out.println("Error, la respuesta correcta es menor.");
return true;
} else if (respuestaRecibida < respuesta[valorAleatorio]) {
System.out.println("Error, la respuesta correcta es mayor.");
return true;
} else
return false;

}

public static void nucleo () {

System.out.println("Intentos restantes: " + intentos);
Scanner respInt = new Scanner(System.in);
try {
respuestaRecibida = respInt.nextInt();
} catch (Exception e) {
System.out.println("Solo se admiten caracteres numericos");
intentos++;
}
if ( compararResultado() ) {
intentos-- ;
while (intentos > 0) {
nucleo();
}
if (intentos == 0) {
intentos = 5;
System.out.println("Has fallado como un LOSER!!!");
System.out.println("¿Quieres volver a jugar?");
System.out.println("");
System.out.println("y = SI n = NO");
aceptarONo();
}
} else {
intentos = 5;
System.out.println("ENHORABUENA!!! HAS ACERTADO.");
System.out.println("¿Quieres volver a jugar?");
System.out.println("");
System.out.println("y = SI n = NO");
aceptarONo();
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
PatataCaliente.explicacionPatataCaliente();
PatataCaliente.listaPreguntasRespuestas();
PatataCaliente.aceptarONo();



// TODO code application logic here
}

}
  #2 (permalink)  
Antiguo 20/03/2016, 07:50
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: duda en java...

Buenas,

La causa esta aqui:

Código Java:
Ver original
  1. ..
  2. while (intentos > 0) {
  3. nucleo();
  4. }
  5. if (intentos == 0) {
  6. intentos = 5;
  7. ...

Tienes que revisar ese codigo. Que tal establecer la variable de numero de variables despues de llamar a aceptarONo()?


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 20/03/2016, 10:10
Avatar de chosbuster  
Fecha de Ingreso: marzo-2016
Mensajes: 10
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: duda en java...

he cambiado el WHILE por un IF, y ya va todo como la seda , mil zenkius ;)

Etiquetas: clase, jar, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:38.