[ Foro de Java ]

Ejercicio 7.02 con ventanas

21-Jun-2011 11:43
David Nuñez
4 Respuestas

Hola Nacho, no consigo hacer la conversión a char por ventana, mira:


import javax.swing.JOptionPane;
class LetraVocalGUI{
public static void main(String args[]){
char letra = (char) JOptionPane.showInputDialog(null,"Introduce una letra cualquiera: ","Consonante o Vocal",JOptionPane.QUESTION_MESSAGE);
switch (letra){
case 'a':JOptionPane.showMessageDialog(null,"has introducido la vocal a","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
case 'e':JOptionPane.showMessageDialog(null,"has introducido la vocal e","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
case 'i':JOptionPane.showMessageDialog(null,"has introducido la vocal i","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
case 'o':JOptionPane.showMessageDialog(null,"has introducido la vocal o","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
case 'u':JOptionPane.showMessageDialog(null,"has introducido la vocal u","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
default :JOptionPane.showMessageDialog(null,"La letra que has introducido no es una vocal, es la consonante: "+letra,"Consonante o Vocal",JOptionPane.QUESTION_MESSAGE);break;
}
}
}


Me da error en la conversión del char y no se me ocurre como puedo hacerlo.

Gracias por tu ayuda


21-Jun-2011 22:13
Nacho Cabanes (+84)

En primer lugar, por legibilidad, hazlo en dos pasos. En el primer paso, lees la respuesta en un string, y en el segundo paso extraes el carácter.

Y para obtener un carácter a partir de un string, no hay una conversión implicita, así que no puedes hacer una conversión de tipos usando (char). En lugar de eso, debes extraer una letra de una cierta posición de la cadena, usando "charAt":

opcion = respuesta.charAt(0);


22-Jun-2011 13:12
David Nuñez

Hola Nacho, así si me compila pero no se si es a lo que te refieres cuando me dices que lo haga en dos pasos:

import javax.swing.JOptionPane;
class LetraVocalGUI{
public static void main(String args[]){
String letra = JOptionPane.showInputDialog(null,"Introduce una letra cualquiera: ","Consonante o Vocal",JOptionPane.QUESTION_MESSAGE);


switch (letra.charAt(0)){
case 'a':JOptionPane.showMessageDialog(null,"has introducido la vocal a","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
case 'e':JOptionPane.showMessageDialog(null,"has introducido la vocal e","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
case 'i':JOptionPane.showMessageDialog(null,"has introducido la vocal i","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
case 'o':JOptionPane.showMessageDialog(null,"has introducido la vocal o","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
case 'u':JOptionPane.showMessageDialog(null,"has introducido la vocal u","Consonante o vocal",JOptionPane.QUESTION_MESSAGE);break;
default :JOptionPane.showMessageDialog(null,"La letra que has introducido no es una vocal, es la consonante: "+letra,"Consonante o Vocal",JOptionPane.QUESTION_MESSAGE);break;
}
}
}


24-Jun-2011 16:45
Nacho Cabanes (+84)

Sí, me refería a eso, pero eso de que un "string" se llame "letra" suena un poco... raro...

Yo lo haría así:

String respuesta = JOptionPane.showInputDialog(null,
 "Introduce una letra cualquiera: ",
 "Consonante o Vocal",
 JOptionPane.QUESTION_MESSAGE);
char letra = respuesta.charAt(0);
switch (letra){
 ...


27-Jun-2011 11:35
David Nuñez

Llevas toda la razón, pero lo había llamado letra por el primer ejemplo que te envie que no me salía. Así está perfecto muchas gracias por la explicación Nacho!

Saludos






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)