Acceder

Ver la Versión Completa : [ CONSULTA ] Problemas con while{}


Cros_10
21/09/14, 22:48:06
Hola, agradecería mucho si me pueden ayudar, estoy realizando mi primera aplicación en android, es algo muy sencillo, o eso creía. Se trata de adivinar el número.

Se crea un número aleatorio, y luego el usuario debe adivinar cual es. El usuario tiene 3 intentos o si no pierde el juego, el problema es que al intentar colocar un while{} para contar los intentos, si el numero no corresponde al creado al azar, la aplicación "muere".
Pasa con while, doWhile y un for.

Intente, mezclar el while con if o switch pero el resultado es el mismo. Creo que la solución podría estar en que cuente (el contador de intentos) cada vez que hago click al boton y no cuando se cumple o no una de las condiciones pero no se como hacer eso y no he podido encontrarlo por ningún lado.

int intento=0;

int nume = (int) (Math.random()*5);
String resul = "Respuesta correcta el numero era: " +nume ;
String resul2 ="El numero es menor" ;
String resul3="el numero es mayor" ;
String perdio = "fallo sus 3 intentos, juego terminado";


EditText numero = (EditText)findViewById(R.id.editText1) ;
String nombre = numero.getText().toString() ;
int valor = Integer.parseInt(nombre) ;

while(intento<3){
numero.setText("") ;
switch (intento){
case 1: {if (nume==valor) {
textView3.setText(resul);
conta=4; }
;break;}//Fin case 1

case 2 : {if(nume<valor){
textView3.setText(resul2);
intento++ ;
} //fin si !=

;break;} //Fin case 2

case 3: {if(nume>valor){
textView3.setText(resul3);
intento++;
}

;break;}
}//Fin switch
}//Fin while
if (intento==3){
textView3.setText(perdio);
}//fin si intentos

if (conta==4){
textView4.setText("Gano el juego") ;
}

}

ese es el código como está en este momento, tengo otro donde no ocupo un switch solo if pero sucede lo mismo. Si alguien sabe cual o cuales son los errores se lo agradecería mucho. Acepto todo tipo de criticas y ayuda ya que soy nuevo en android y todo me servira. De antemano gracias.

mocelet
22/09/14, 08:50:40
Como diría kriogeN, primero Java y después Android.

No sé en qué método estarás ejecutando eso, pero el fallo gordo es precisamente meter un while, efectivamente nunca sale del bucle salvo que pongas la correcta a la primera, y de ahí que quede bloqueado (edito: o no, es lioso con tanta llave y estructuras anidadas) .

En cualquier caso sobran el while y el switch. La solución es la que indicas, cuando se aprieta el botón de adivinar se actualiza la variable intentos, se lee el EditText y se hace la comprobación. Sin bucles que bloqueen la ejecución del hilo principal de Android y sin ningún switch (¿qué sentido tiene hacer cosas distintas según el número de intento?) .

Cómo hacer algo al apretar un botón viene en cualquier tutorial de Android, espero que estés siguiendo alguno! Por aquí suelen hablar bien del tutorial de sgoliver.

kriogeN
22/09/14, 10:48:30
Como diría kriogeN, primero Java y después Android.

No sé en qué método estarás ejecutando eso, pero el fallo gordo es precisamente meter un while, efectivamente nunca sale del bucle salvo que pongas la correcta a la primera, y de ahí que quede bloqueado (edito: o no, es lioso con tanta llave y estructuras anidadas) .

En cualquier caso sobran el while y el switch. La solución es la que indicas, cuando se aprieta el botón de adivinar se actualiza la variable intentos, se lee el EditText y se hace la comprobación. Sin bucles que bloqueen la ejecución del hilo principal de Android y sin ningún switch (¿qué sentido tiene hacer cosas distintas según el número de intento?) .

Cómo hacer algo al apretar un botón viene en cualquier tutorial de Android, espero que estés siguiendo alguno! Por aquí suelen hablar bien del tutorial de sgoliver.

jejeje, si, y en Java no sólo dominar la sintaxis, sino saber como mínimo que es una clase, una interfaz y tener medio controlada la herencia. Aunque el tema del bloqueo del UI Thread también existe en Java en general, en Android es mucho más agudo y hay que controlarlo mucho más.

El tutorial de SgoLiver es muy muy muy bueno, incluso la última vez que lo vi le había añadido ejemplos de como usar los 2 menús laterales existentes en la librería de soporte, lo cual significa que también trata hasta el tema de los Fragment.

Cros_10
23/09/14, 03:41:15
Como diría kriogeN, primero Java y después Android.

No sé en qué método estarás ejecutando eso, pero el fallo gordo es precisamente meter un while, efectivamente nunca sale del bucle salvo que pongas la correcta a la primera, y de ahí que quede bloqueado (edito: o no, es lioso con tanta llave y estructuras anidadas) .

En cualquier caso sobran el while y el switch. La solución es la que indicas, cuando se aprieta el botón de adivinar se actualiza la variable intentos, se lee el EditText y se hace la comprobación. Sin bucles que bloqueen la ejecución del hilo principal de Android y sin ningún switch (¿qué sentido tiene hacer cosas distintas según el número de intento?) .

Cómo hacer algo al apretar un botón viene en cualquier tutorial de Android, espero que estés siguiendo alguno! Por aquí suelen hablar bien del tutorial de sgoliver.

Gracias