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

Las vocales con asteriscos pidiendo letra (Java principiante)

Estas en el tema de Las vocales con asteriscos pidiendo letra (Java principiante) en el foro de Java en Foros del Web. Buenas! En el módulo de programación de DAW nos han pedido a parte de otros ejercicios el poner las vocales con asteriscos en un print, ...
  #1 (permalink)  
Antiguo 09/11/2019, 19:44
 
Fecha de Ingreso: agosto-2012
Mensajes: 37
Antigüedad: 7 años, 2 meses
Puntos: 1
Las vocales con asteriscos pidiendo letra (Java principiante)

Buenas!

En el módulo de programación de DAW nos han pedido a parte de otros ejercicios el poner las vocales con asteriscos en un print, lo cual es bastante sencillo ya que había que hacerlo en plan:

System.out.println("****");
System.out.println("* ");
System.out.println("****");
System.out.println("* ");
System.out.println("****");

Pero yo de primeras no quería hacerlo así, quería hacerlo de manera que al usuario se le pida que meta una vocal en el teclado y entonces la transforma al asterisco, al final lo he mandado como todos pero me he quedado con las ganas de saber cómo se haría pidiendo una vocal, ya que hasta ahora sólo nos han pedido "scannear" números para luego jugar con ellos (n > 0) etc etc.

Tengo esto de código pero me daba errores en consola (de momento nos prohíben usar IDE):

Código Java:
Ver original
  1. import java.util.Scanner;
  2.  
  3.  
  4. public class PROG02_Ejer05 {
  5.     public static void main(String[] args){
  6.         Scanner teclado = new Scanner( System.in );
  7.        
  8.         boolean comprobar = true;
  9.         char n;
  10.        
  11.         while (comprobar == true) {
  12.             System.out.println("ingrese una vocal mayúscula: ");
  13.             n = teclado.next().charAt(0);
  14.            
  15.             if (n == A) {
  16.                 System.out.println("****");
  17.                 System.out.println("*  *");
  18.                 System.out.println("****");
  19.                 System.out.println("*  *");
  20.                 System.out.println("*  *");
  21.                         }
  22.         }
  23.     }
  24. }

El if n = A está mal ya que entiende A como variable y no sé como ponerle un = a la letra que se ha escaneado, que el usuario ha introducido.

Luego pondría un else de que si no son las anteriores A,E,I,O o U, ponga "No has introducido una vocal inténtalo de nuevo". Eso lo sé hacer sin problemas.

El boolean comprobar = true lo pongo al principio como "activador" y al final de todos los condicionales pongo el false para que el programa se acabe pero si el programa cae en el "else" volvería a pedir la letra, en vez de finalizar el programa.

¿No es muy difícil no? Me quería marcar un ejercicio más completo pero no me ha dado tiempo pero igualmente quiero aprender a hacerlo!!
  #2 (permalink)  
Antiguo 09/11/2019, 21:26
 
Fecha de Ingreso: abril-2011
Mensajes: 42
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Las vocales con asteriscos pidiendo letra (Java principiante)

Hola, los chars en Java van entre comillas simples:

Código Java:
Ver original
  1. if(n == 'A'){
  2.  
  3. }

Las cadenas de texto o strings, en cambio, van con comillas dobles. Ej. String palabra = "hola";

El resto de vocales lo dices bien, se haría con else if.

Última edición por prueba230683; 09/11/2019 a las 21:33
  #3 (permalink)  
Antiguo 10/11/2019, 08:19
 
Fecha de Ingreso: agosto-2012
Mensajes: 37
Antigüedad: 7 años, 2 meses
Puntos: 1
Respuesta: Las vocales con asteriscos pidiendo letra (Java principiante)

Cita:
Iniciado por prueba230683 Ver Mensaje
Hola, los chars en Java van entre comillas simples:

Código Java:
Ver original
  1. if(n == 'A'){
  2.  
  3. }

Las cadenas de texto o strings, en cambio, van con comillas dobles. Ej. String palabra = "hola";

El resto de vocales lo dices bien, se haría con else if.
Hola prueba, gracias! Pensaba que iba algo más desencaminado. Funciona bien pero he querido cambiar que si metes una vocal, tanto mayúscula como minúscula funcione, ya que sólo funcionaba con una de las dos (la que pusieras en el paréntesis) pues java las diferencia. Pensaba que con el operador "o" (||) valdría pero me da error en consola. He puesto el código así:

Código Java:
Ver original
  1. if (n == 'A' || 'a') {

error: bad operand types for binary operator '||'
if (n == 'A' || 'a') {
^
first type: boolean
second type: char
Y me da error en el "||".
  #4 (permalink)  
Antiguo 10/11/2019, 08:20
 
Fecha de Ingreso: abril-2011
Mensajes: 42
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Las vocales con asteriscos pidiendo letra (Java principiante)

La forma correcta es:

Código Java:
Ver original
  1. if (n == 'A' || n == 'a') {
  2.  
  3. }
  #5 (permalink)  
Antiguo 10/11/2019, 10:00
 
Fecha de Ingreso: agosto-2012
Mensajes: 37
Antigüedad: 7 años, 2 meses
Puntos: 1
Respuesta: Las vocales con asteriscos pidiendo letra (Java principiante)

Perfecto, así me ha quedado el código por si alguien quisiera verlo:

Código Java:
Ver original
  1. import java.util.Scanner;
  2.  
  3.  
  4. public class PROG02_Ejer05_complejo {
  5.     public static void main(String[] args){
  6.         Scanner teclado = new Scanner( System.in );
  7.        
  8.         char n;
  9.        
  10.        
  11.             System.out.println("ingrese una vocal");
  12.             n = teclado.next().charAt(0);
  13.            
  14.            
  15.             if (n == 'A' || n == 'a') {
  16.                 System.out.println("****");
  17.                 System.out.println("*  *");
  18.                 System.out.println("****");
  19.                 System.out.println("*  *");
  20.                 System.out.println("*  *");
  21.                         }
  22.            
  23.             else if (n == 'E' || n == 'e') {
  24.                 System.out.println("****");
  25.                 System.out.println("*   ");
  26.                 System.out.println("****");
  27.                 System.out.println("*   ");
  28.                 System.out.println("****");
  29.                         }
  30.             else if (n == 'I' || n == 'i') {
  31.                 System.out.println("****");
  32.                 System.out.println(" ** ");
  33.                 System.out.println(" ** ");
  34.                 System.out.println(" ** ");
  35.                 System.out.println("****");
  36.                         }
  37.                        
  38.             else if (n == 'O' || n == 'o') {
  39.                 System.out.println("****");
  40.                 System.out.println("*  *");
  41.                 System.out.println("*  *");
  42.                 System.out.println("*  *");
  43.                 System.out.println("****");
  44.                         }  
  45.  
  46.             else if (n == 'U' || n == 'u') {
  47.                 System.out.println("*  *");
  48.                 System.out.println("*  *");
  49.                 System.out.println("*  *");
  50.                 System.out.println("*  *");
  51.                 System.out.println("****");
  52.                         }
  53.                        
  54.                        
  55.             else {
  56.                 System.out.println("Has ingresado un carácter inválido, por favor, inténtalo de nuevo.");
  57.                 }
  58.        
  59.     }
  60. }

Lo que no he sabido hacer es hacer que no se acabe el programa en el else, para decir que ha sido un caracter inválido, inténtelo de nuevo y que deje meter otra vocal, pero que no se acabe el programa. (pensaba que sabía con el boolean comprobar = true; poniendo while luego).

Incluso cuando meto una vocal bien, que vuelva a poner introduzca una vocal, y no se acabe el programa.
  #6 (permalink)  
Antiguo 10/11/2019, 11:16
 
Fecha de Ingreso: abril-2011
Mensajes: 42
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Las vocales con asteriscos pidiendo letra (Java principiante)

Puedes decirle al usuario que escriba "c" si quiere continuar, u otro caracter en caso de que quiera salir del programa:

Código Java:
Ver original
  1. import java.util.Scanner;
  2.  
  3.  
  4. public class PROG02_Ejer05_complejo {
  5.     public static void main(String[] args){
  6.         Scanner teclado = new Scanner( System.in );
  7.        
  8.         char n;
  9.        
  10.         char continuar = 'c';
  11.        
  12.         while(continuar == 'c'){
  13.             System.out.println("ingrese una vocal");
  14.             n = teclado.next().charAt(0);
  15.            
  16.             if (n == 'A' || n == 'a') {
  17.                 System.out.println("****");
  18.                 System.out.println("*  *");
  19.                 System.out.println("****");
  20.                 System.out.println("*  *");
  21.                 System.out.println("*  *");
  22.             }else if (n == 'E' || n == 'e') {
  23.                 System.out.println("****");
  24.                 System.out.println("*   ");
  25.                 System.out.println("****");
  26.                 System.out.println("*   ");
  27.                 System.out.println("****");
  28.             }else if (n == 'I' || n == 'i') {
  29.                 System.out.println("****");
  30.                 System.out.println(" ** ");
  31.                 System.out.println(" ** ");
  32.                 System.out.println(" ** ");
  33.                 System.out.println("****");
  34.             }else if (n == 'O' || n == 'o') {
  35.                 System.out.println("****");
  36.                 System.out.println("*  *");
  37.                 System.out.println("*  *");
  38.                 System.out.println("*  *");
  39.                 System.out.println("****");
  40.             }else if (n == 'U' || n == 'u') {
  41.                 System.out.println("*  *");
  42.                 System.out.println("*  *");
  43.                 System.out.println("*  *");
  44.                 System.out.println("*  *");
  45.                 System.out.println("****");
  46.             }else {
  47.                 System.out.println("Has ingresado un carácter inválido.");
  48.             }  
  49.                
  50.             System.out.println("Introduce c para continuar o introduce otra letra para salir.");
  51.             continuar = teclado.next().charAt(0);
  52.         }
  53.         System.out.println("Programa finalizado.");
  54.     }
  55. }



La zona horaria es GMT -6. Ahora son las 15:21.