Título: Problema metodo
Publicado por: anman en 25 Diciembre 2007, 19:19 pm
Hola,quiero hacer un metodo para que un conjunto de metodos me aparezcan aleatoriamente y no todos ellos¿como lo puedo hacer?He estao intentando con el math.random pero no consigo nada.Agradeceria mucho que alguien me guiara un poco
Título: Re: Problema metodo
Publicado por: Casidiablo en 26 Diciembre 2007, 14:46 pm
Pues no te entendí nada... tomate el tiempo que sea necesario explicando lo que necesitas y qué has hecho.
Un saludo!
Título: Re: Problema metodo
Publicado por: anman en 26 Diciembre 2007, 15:30 pm
Voy a intentar explicarlo mejor.Yo tengo que hacer un trivial,cada pregunta del trivial la he puesto en un metodo.Quiero hacer un metodo para que cada pregunta aparezca aleatoriamente,no en orden como las he puesto.He intentado hacer un metodo y ponerle el math.random pero no consegui nada
Título: Re: Problema metodo
Publicado por: egyware en 26 Diciembre 2007, 16:39 pm
no se como funciona realmente el metodo Math.random pero si por casualidad devuelve numeros entre 0 y 1 esta ecuacion matematica te puede servir u con este metodo de java tb //.. dentro de tu clase private double random; /*supongamos que aqui guardamos el numero al azar perteneciente al intervalo [0,1] que nos devuelve algun metodo que genere numero aleatorios*/ private int a = 10; /* aqui defino como a la cantidad de preguntas posibles que allan le puse como ejemplo 10 preguntas*/ ramdom = getRandom();/*aqui es mi supesto metodo que genera numeros entre 0 y 1*/ int caso = ((int)(ramdom*a))+1; switch(caso){ //... casos case 1: return "Alguna respuesta o llamada a metodo" case 2: return getPregunta2(); } return ""; }
eso suerte xauu
Título: Re: Problema metodo
Publicado por: anman en 26 Diciembre 2007, 17:15 pm
Una pregunta y el metodo getRandom ¿que pones?
Título: Re: Problema metodo
Publicado por: egyware en 26 Diciembre 2007, 17:25 pm
:huh: :huh: Nose se supone que el metodo era fictisio lo que pasa es que nunca usado el metodo de Math.random() y como no lo he usado no se cual es el rango de numeros que devuelve, yo antes de programar en java programa en Qbasic y para obtener numero aleatorios era algo asi a = 10' es la cantidad de casos le pondre 10 SELECT CASE a CASE 1 '... ' :huh: :huh: buaa se me olvido como era programar en Qbasic
yap pero era algo asi voy a revisar la clase Math si te puedo ayudar en algo más xauu suerte PS: ya listo quedaria algo asi //.. dentro de tu clase private double random; } /*supongamos que aqui guardamos el numero al azarperteneciente al intervalo [0,1] que nos devuelve algun metodo que genere numero aleatorios*/ private int a = 10; /* aqui defino como a la cantidad de preguntas posibles que allan le puse como ejemplo 10 preguntas*/ random = Math. random();/*aqui esta el metodo de la clase Math que devuelve numeros entre 0 y 1*/int caso = ((int)(random*a))+1;switch(caso){ //... casos case 1: return "Alguna respuesta o llamada a metodo"; case 2: return getPregunta2(); }return ""; }
Te doy un consejo cuando no sepas algo de algun metodo puedes revisar el Api de java yo lo revise u justo era lo que necesita numeros entre [0,1] xau suerte
Título: Re: Problema metodo
Publicado por: anman en 26 Diciembre 2007, 17:44 pm
Tengo el siguiente codigo: public static void preguntasTema1() { c = new Console(); c.gotoxy(5,2); c.cputs("Usuario:" +TestJava.nombre); double ramdom; int a=10; ramdom=Math.random(); int caso = ((int)(ramdom*a))+1; switch(caso){
case 1: pregunta1_tema1(); case 2: pregunta2_tema1(); case 3: pregunta3_tema1(); case 4: pregunta4_tema1(); case 5: pregunta5_tema1(); case 6: pregunta6_tema1(); case 7: pregunta7_tema1(); case 8: pregunta8_tema1(); case 9: pregunta9_tema1(); case 10: pregunta10_tema1(); case 11: pregunta11_tema1(); case 12: pregunta12_tema1(); case 13: pregunta13_tema1(); case 14: pregunta14_tema1(); case 15: pregunta15_tema1(); case 16: pregunta16_tema1(); case 17: pregunta17_tema1(); case 18: pregunta18_tema1(); case 19: pregunta19_tema1(); case 20: pregunta20_tema1(); } Lo que me pasa ahora es que me aparece aleatorio la primera ,pero las demas seguidas
Título: Re: Problema metodo
Publicado por: Casidiablo en 26 Diciembre 2007, 18:56 pm
Uisshhh... con el debido respeto... eso que haces está feo. Es mejor que tengas solo un metodo que se llame por ejemplo pregunta, y al que le pasas un parámetro con el número de la pregunta:
public void pregunta(int x)
y luego cosas como:
pregunta(5); pregunta(8); pregunta(random); pregunta(x);
Un saludo!
Título: Re: Problema metodo
Publicado por: anman en 26 Diciembre 2007, 19:05 pm
No si lo habia hecho asi: public static void preguntasTema1() { c = new Console(); c.gotoxy(5,2); c.cputs("Usuario:" +TestJava.nombre); double ramdom; int a=10; ramdom=Math.random(); int caso = ((int)(ramdom*a))+1; switch(caso){
case 1: preguntas_resumen(); } } public static void preguntas_resumen(){ pregunta1_tema1(); pregunta2_tema1(); pregunta3_tema1(); pregunta4_tema1(); pregunta5_tema1(); pregunta6_tema1(); pregunta7_tema1(); pregunta8_tema1(); pregunta9_tema1(); pregunta10_tema1(); pregunta11_tema1(); pregunta12_tema1(); pregunta13_tema1(); pregunta14_tema1(); pregunta15_tema1(); pregunta16_tema1(); pregunta17_tema1(); pregunta18_tema1(); pregunta19_tema1(); pregunta20_tema1(); } pero no me funciona,no se porque
Título: Re: Problema metodo
Publicado por: Casidiablo en 26 Diciembre 2007, 19:17 pm
Haber... creo que no me has entendido... eso de hacer :
pregunta1_tema1(); pregunta2_tema1(); pregunta3_tema1(); pregunta4_tema1(); preguntan_tema1();
está muy mal. Lo mejor es hacerlo como te puse arriba. Si quieres pon TODO el código que tienes y te intento ayudar. Mi MSN es castidiablo@gmail.com por si quieres soporte online XD.
un saludo!
Título: Re: Problema metodo
Publicado por: Ragnarok en 26 Diciembre 2007, 23:09 pm
Deberías hacerlo con un fichero de propiedades, que, aunque no son realmente para eso, son muy facilitos de usar.
http://java.sun.com/docs/books/tutorial/i18n/resbundle/propfile.html http://www.rgagnon.com/javadetails/java-0135.html
También puedes complicarte un poco más y usar xml o bases de datos, pero con usar ficheros de propiedades para empezar ya está bien.
Recuerda leer las normas y plantear las preguntas con claridad, lo de "intentar explicarlo mejor" deberías haberlo hecho desde el principio.
Título: Re: Problema metodo
Publicado por: egyware en 27 Diciembre 2007, 16:54 pm
Voy a tomar tu codigo y si se que esta feo pero imaginen lo que yo hacia sin saber nada de java (con suerte sabia para que era System.out.println()) public static void preguntasTema1() { c = new Console(); c.gotoxy(5,2); c.cputs("Usuario:" +TestJava.nombre); double ramdom; int a=10; //son veinte preguntas asi deberias colocar 20 a = 20; //ahi sip int caso = ((int)(random*a))+1; switch(caso){ case 1: pregunta1_tema1(); break; //si por algun motivo devuelve un String poner //return tu_metodo(con algun_parametro); //pero en este caso no lo es case 2: pregunta2_tema1(); break; case 3: pregunta3_tema1(); break; case 4: pregunta4_tema1(); break; case 5: pregunta5_tema1();break; case 6: pregunta6_tema1();break; case 7: pregunta7_tema1();break; case 8: pregunta8_tema1();break; case 9: pregunta9_tema1();break; case 10: pregunta10_tema1();break; case 11: pregunta11_tema1();break; case 12: pregunta12_tema1();break; case 13: pregunta13_tema1();break; case 14: pregunta14_tema1();break; case 15: pregunta15_tema1();break; case 16: pregunta16_tema1();break; case 17: pregunta17_tema1();break; case 18: pregunta18_tema1();break; case 19: pregunta19_tema1();break; case 20: pregunta20_tema1();break; }
te ayude un poco pero igual deberias arreglar un poco tu codigo Aver si aún no se te ocurre aqui va algo public Class Main { public static void main (String s []){ System. out. println("Tirando los dados"); int b = 6; //seis posibles respuestas int caso = ((int)Math. random()*b )+1; switch(caso){ case 1: System. out. println("Ha Salido el numero 1"); break; case 2: System. out. println("Ha Salido el numero 2"); break; case 3: System. out. println("Ha Salido el numero 3"); break; case 4: System. out. println("Ha Salido el numero 4"); break; case 5: System. out. println("Ha Salido el numero 5"); break; case 6: System. out. println("Ha Salido el numero 6"); break; }//fin de switch }//fin de main }//fin de la clase
pero puedo hacer mas pillo aún public Class Main { public static void main (String s []){ System. out. println("Tirando los dados"); int a = 6; //seis posibles respuestas int num = ((int)Math. random()*a )+1; System. out. println("Ha Salido en el dado el numero *"+num +"*"); }//fin de main }//fin de la clase
y eso te cambie algunas variables para que sepas para que realmente sirven y como puedes usar ese numero del tipo int para obtener las preguntas que estan en un Array de String puedes static { s[0] = "Pregunta 1"; s[1] = "pregunta 2"; s[2] = "pregunta 3"; } public static void main (String args []){ int num = ((int)Math. random()*3)+1;/*deje immediatamente seteado que son 3 preguntas y nada mas*/ }
Bueno espero que estos ejemplos te sirvan te mucha ayuda xauuu
Título: Re: Problema metodo
Publicado por: anman en 4 Enero 2008, 21:04 pm
El codigo para hacer lo que pedi es este public static void preguntasTema1() { c = new Console(); c.gotoxy(5, 2); c.cputs("Usuario:" + nombre); // genera preguntas aleatorias.Math.random nos da un numero entre 0 y x int[] preguntasAleatorias = new int[10];/*
for (int i = 0; i < 10; i++) {// recorremos el vector int random = (int) (Math.random() * 20) + 1; while (repetido(random, preguntasAleatorias)) { random = (int) (Math.random() * 20) + 1; } preguntasAleatorias[i] = random;
}// fin de preguntas aleatorias for (int i = 0; i < preguntasAleatorias.length; i++) { switch (preguntasAleatorias[i]) { case 1: pregunta("",""); break; case 2: pregunta("",""); break; } } }
// Verificamos que las preguntas no se repitan public static boolean repetido(int x, int[] preguntasAleatorias) { // recorremos el vector de preguntasAlaeatorias for (int i = 0; i < preguntasAleatorias.length; i++) if (preguntasAleatorias[i] == x) return true; return false; }
pd:gracias a Casidiablo que me ha ayudado a hacerlo
|