elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Novato] Problema con do-while en codigo sencillo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Novato] Problema con do-while en codigo sencillo  (Leído 4,684 veces)
Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
[Novato] Problema con do-while en codigo sencillo
« en: 7 Febrero 2013, 20:54 pm »

Hola, buenos días y gracias por ayudarme con mi problema :)

Soy nuevo en Java, estoy aprendiendo con el libro Como programar en Java de deitel, ya estoy en el capítulo 8 de 30 xD

Verán el problema es este:

Escriba una aplicación que simule el lanzamiento de monedas. Deje que el programa lance una moneda cada vez que el usuario seleccione la opción del menú “Lanzar moneda”. Cuente el número de veces que aparezca cada uno de los lados de la moneda. Muestre los resultados. El programa debe llamar a un método separado, llamado tirar, que no tome argumentos y devuelva falseen caso de cara, y true en caso de cruz.

Bueno pues he estado realizando el código, pero tengo un problema con el do -while, se supone que el do debe interpretar el final de ese bloque al encontrar el ";" seguido del while.

El código del do-while lo he hecho en un método aparte, pero al intentar cerrar el método con la llave de cierre, la llave cierra la llave del do "{", lanzando así errores.

Uso Netbeans y DrJava, Por favor disculpen si la duda les parece muy tonta, recién estoy aprendiendo.


Code:

Código
  1. package juegomoneda;
  2.  
  3. import java.util.Scanner;
  4. import java.util.Random;
  5.  
  6. public class LanzarMoneda {
  7.  
  8. private int cara;
  9. private int cruz;
  10. Scanner t = new Scanner(System.in);
  11.  
  12. public void jugar()
  13. {
  14. // creamos la variable que represente la primera decision(opc)
  15. String opc;
  16.  
  17. bienvenida(); // llamamos al metodo bienvenida para que de la bienvenida al usuario
  18.  
  19. // pedimos que se elija una opcion
  20. System.out.println("Eliga una opcion");
  21. System.out.println("Escriba 'L' para lanzar la moneda o");
  22. System.out.println("Escriba 'S' para salir");
  23. opc = t.nextLine();
  24.  
  25. // si la opcion elegida es 'Salir' imprimimos un mensaje de salida
  26. if("S".equals(opc))
  27. {
  28. System.out.println("Ha decido salir");
  29. System.out.println("No se inicio el juego");
  30.  
  31. // si la opcion elegida es 'Lanzar' tiramos la moneda
  32. if("L".equals(opc))
  33. {
  34. // llamamos al metodo tirar que devuelve true si cae cara o false si cae cruz
  35. // almacenamos el resultado en la variable boolean resultado, si el valor devuelto
  36. // es true, aumentamos cara en 1, y si es false aumentamos cruz en 1
  37.  
  38. boolean resultado = tirar();
  39. if(resultado == true)
  40. cara++;
  41. else
  42. cruz++;
  43.  
  44. }
  45. segundoTiro();
  46.  
  47. }
  48. }
  49.  
  50. // metodo que da la bienvenida al juego
  51.  
  52. public void bienvenida()
  53. {
  54. System.out.println("Bienvenido al juego 'Lanza la moneda'");
  55. }
  56.  
  57. // metodo tirar, tira una moneda, si cae cara devuelve true, si cae cruz devuelve false
  58.  
  59. public boolean tirar()
  60. {
  61. Random generadorAleatorio = new Random();
  62. int moneda = 1 + generadorAleatorio.nextInt(2);
  63.  
  64. if(moneda == 1)
  65. return true;
  66. else
  67. return false;
  68. }
  69.  
  70. public void segundoTiro()
  71. {
  72. String opc2;
  73. boolean resultado;
  74.  
  75. do{
  76. // y preguntamos al usuario si quiere lanzarla nuevamente
  77.  
  78. System.out.println("Desea Lanzar la moneda otra vez");
  79. System.out.println("'Y' para si y 'N' para no");
  80. opc2 = t.nextLine();
  81.  
  82. if("Y".equals(opc2)){
  83. // Hacemos lo mismo, llamar al metodo tirar y aumentar si es cara o cruz
  84. resultado = tirar();
  85. if(resultado == true)
  86. cara++;
  87. else
  88. cruz++;}
  89. while("Y".equals(opc2)); // Se repite el lanzamiento mientras la opcion elegida sea //'Si, Lanzar'
  90.  
  91. // Si despues del 1er tiro el usuario no quiere seguir jugando, imprimimos un //mensaje de salida
  92. // e imprimimos los resultados del juego
  93.  
  94. if("N".equals(opc2))
  95. {
  96. System.out.println("Ha decido salir");
  97. System.out.println("Usted saco "+cara+ "caras y "+cruz+" cruces");
  98. }
  99. } // Esta llave debería indicar el fin del método segundoTiro
  100. } // Y esta el fin de la clase


« Última modificación: 9 Febrero 2013, 15:47 pm por Debci » En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: [Novato] Problema con do-while en codigo sencillo
« Respuesta #1 en: 7 Febrero 2013, 21:53 pm »

No he leído el código en absoluto, simplemente he corregido un error de sintaxis que tú mismo sabías y deberías haber corregido :P

Procura identar el código y seguir un estilo al programar. La tarea de programar no trata sólo de escribir líneas de código.

¡Saludos! y si no te funciona trata de averiguar por qué y, lo más importante, trata de solventarlo por ti mismo ;)

Código
  1. package juegomoneda;
  2.  
  3. import java.util.Random;
  4. import java.util.Scanner;
  5.  
  6. public class LanzarMoneda {
  7.  
  8.    private int cara;
  9.    private int cruz;
  10.    Scanner t = new Scanner(System.in);
  11.  
  12.    public void jugar()
  13.    {
  14.        // creamos la variable que represente la primera decision(opc)
  15.        String opc;
  16.  
  17.        bienvenida(); // llamamos al metodo bienvenida para que de la bienvenida al usuario
  18.  
  19.        // pedimos que se elija una opcion
  20.        System.out.println("Eliga una opcion");
  21.        System.out.println("Escriba 'L' para lanzar la moneda o");
  22.        System.out.println("Escriba 'S' para salir");
  23.        opc = t.nextLine();
  24.  
  25.        // si la opcion elegida es 'Salir' imprimimos un mensaje de salida
  26.        if("S".equals(opc))
  27.        {
  28.            System.out.println("Ha decido salir");
  29.            System.out.println("No se inicio el juego");
  30.  
  31.            // si la opcion elegida es 'Lanzar' tiramos la moneda
  32.            if("L".equals(opc))
  33.            {
  34.                // llamamos al metodo tirar que devuelve true si cae cara o false si cae cruz
  35.                // almacenamos el resultado en la variable boolean resultado, si el valor devuelto
  36.                // es true, aumentamos cara en 1, y si es false aumentamos cruz en 1
  37.  
  38.                boolean resultado = tirar();
  39.                if(resultado == true)
  40.                cara++;
  41.                else
  42.                cruz++;
  43.  
  44.            }
  45.            segundoTiro();
  46.        }
  47.    }
  48.  
  49.    // metodo que da la bienvenida al juego
  50.  
  51.    public void bienvenida()
  52.    {
  53.        System.out.println("Bienvenido al juego 'Lanza la moneda'");
  54.    }
  55.  
  56.    // metodo tirar, tira una moneda, si cae cara devuelve true, si cae cruz devuelve false
  57.  
  58.    public boolean tirar()
  59.    {
  60.        Random generadorAleatorio = new Random();
  61.        int moneda = 1 + generadorAleatorio.nextInt(2);
  62.  
  63.        if(moneda == 1)
  64.        return true;
  65.        else
  66.        return false;
  67.    }
  68.  
  69.    public void segundoTiro()
  70.    {
  71.        String opc2;
  72.        boolean resultado;
  73.  
  74.        do {
  75.        // y preguntamos al usuario si quiere lanzarla nuevamente
  76.  
  77.        System.out.println("Desea Lanzar la moneda otra vez");
  78.        System.out.println("'Y' para si y 'N' para no");
  79.        opc2 = t.nextLine();
  80.  
  81.        if("Y".equals(opc2))
  82.        {
  83.            // Hacemos lo mismo, llamar al metodo tirar y aumentar si es cara o cruz
  84.            resultado = tirar();
  85.            if(resultado == true)
  86.            cara++;
  87.        }
  88.        else
  89.        {
  90.            cruz++;
  91.        }
  92.        } while("Y".equals(opc2)); // Se repite el lanzamiento mientras la opcion elegida sea //'Si, Lanzar'
  93.  
  94.        // Si despues del 1er tiro el usuario no quiere seguir jugando, imprimimos un //mensaje de salida
  95.        // e imprimimos los resultados del juego
  96.  
  97.        if("N".equals(opc2))
  98.        {
  99.            System.out.println("Ha decido salir");
  100.            System.out.println("Usted saco "+cara+ "caras y "+cruz+" cruces");
  101.        }
  102.    } // Esta llave debería indicar el fin del método segundoTiro
  103. } // Y esta el fin de la clase


« Última modificación: 7 Febrero 2013, 21:55 pm por BatchianoISpyxolo » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: [Novato] Problema con do-while en codigo sencillo
« Respuesta #2 en: 7 Febrero 2013, 22:04 pm »

Lol! Ya veo, fue un error de sintaxis, debía de haber cerrado la llave del do xD


Salu2 y gracias ;D
En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
[Novato] Problema con do-while en codigo sencillo
« Respuesta #3 en: 9 Febrero 2013, 15:47 pm »

El mensaje '[Novato] Problema con do-while en codigo sencillo' fue bloqueado
Considero que el tema esta solucionado.
Leer reglas:
http://foro.elhacker.net/reglas
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
busco Un codigo muy sencillo « 1 2 »
PHP
bels_mike 18 8,203 Último mensaje 14 Octubre 2007, 11:19 am
por Alex_bro
No funciona codigo sencillo... « 1 2 3 »
Programación Visual Basic
hAcKeR92 20 6,981 Último mensaje 20 Febrero 2008, 02:34 am
por Chefito
INTERPRETACIÓN CODIGO. SOY NOVATO NOVATO
Ingeniería Inversa
blanes20 5 5,233 Último mensaje 7 Julio 2009, 02:35 am
por franfis
Duda, código sencillo.
Java
leogtz 6 5,058 Último mensaje 6 Marzo 2010, 02:01 am
por leogtz
Ayuda con código PHP+MySQL sencillo
PHP
mokoMonster 2 2,729 Último mensaje 19 Marzo 2012, 21:27 pm
por mokoMonster
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines