¿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);
String sName = "", sRet= "";
char cAsig;
for (int x=0; x<131; x++ ){
System.out.println("Introduce nombre del profesor:");
sName= Teclado.nextLine();
System.out.flush();
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");
}
}
}
DoEvents! :P
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
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");
}
}
}
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