[ Foro de Java ]
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
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);
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;
}
}
}
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){
...
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.)