Título: Me salta una captura [Ayuda]
Publicado por: Psyke1 en 24 Noviembre 2011, 01:18 am
¿Por qué no funciona correctamente esto? :huh: Me salta la captura de sName a partir de la segunda vuelta. ¿Soluciones a ser posible usando la clase Scanner? Gracias. import java.util.*; public class Hello1 { public static void main (String args []) { Scanner Teclado = new Scanner (System. in); char cAsig; for (int x=0; x<131; x++ ){ System. out. println("Introduce nombre del profesor:"); sName= Teclado.nextLine(); do { System. out. println("Introduce el carácter correspondiente a su tipo de enseñanza:"); cAsig= Teclado.next().charAt(0); case 's': sRet="Secundaria" ; break; case 'b': sRet="Bachiller" ; break; case 'c': sRet="Ciclo Formativos" ; break; default : System. out. println("Error\nSolo se aceptan los caracteres 's', 'b' y 'c'\n"); sRet=""; } } while (sRet == ""); System. out. println(sName + " es profesor de " + sRet + "\n"); } } }
DoEvents! :P
Título: Re: Me salta una captura [Ayuda]
Publicado por: RyogiShiki en 24 Noviembre 2011, 01:22 am
Era lo que habia mencionado en el otro post de usar Scanner. Cada vez que lees debes poner esta linea para ignorar el retorno de caro: Teclado.skip("\n");
En el foro antes: http://foro.elhacker.net/empty-t337586.0.html Saludos
Título: Re: Me salta una captura [Ayuda]
Publicado por: Psyke1 en 24 Noviembre 2011, 01:53 am
Ok, gracias lo arreglé así: import java.util.*;
public class Hello1 { public static void main (String args[]) { Scanner Teclado= new Scanner(System.in).useDelimiter("\n"); String sName = "", sRet= ""; char cAsig; for (int x=0; x<131; x++ ){ System.out.println("Introduce nombre del profesor:"); sName= Teclado.nextLine(); do { System.out.println("Introduce el carácter correspondiente a su tipo de enseñanza:"); cAsig= Teclado.next().charAt(0); switch (Character.toLowerCase(cAsig)){ case 's': sRet="Secundaria" ; break; case 'b': sRet="Bachiller" ; break; case 'c': sRet="Ciclo Formativos" ; break; default : System.out.println("Error\nSolo se aceptan los caracteres 's', 'b' y 'c'\n"); sRet=""; } } while (sRet == ""); System.out.println(sName + " es profesor de " + sRet + "\n"); Teclado.skip("\n"); } } }
Título: Re: Me salta una captura [Ayuda]
Publicado por: RyogiShiki en 24 Noviembre 2011, 02:06 am
Eso es una buena opción, aunque si dejas vacío el dato de cAsig= Teclado.next().charAt(0);
más de una vez producirá un StringIndexOutOfBoundsException (http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/StringIndexOutOfBoundsException.html) Saludos
|