Validación anómala de tipos primitivos

Buenas luk_tk:
Quiero obtener un numero entero válido. Para ello, quiero validar lo que me introduzca el usuario por el dispositivo de entrada estándar. El problema es que si inserto un carácter a vaidar como los siguientes: ñ, ç, á, é, í, o, ú, à, è, ì, o, ù, ... Tengo que pulsar la tecla "enter" tres veces. Sin embargo, con los demás caracteres, con pulsar la tecla enter una vez (que es lo normal), ya funciona.
Evidentemente, lo que pienso es que existe algún tipo de conflicto con Java, ya que al utilizar UTF-8 (4 bytes), si es un carácter ASCii gasta solamente 1byte, pero al utilizar otros caracteres como los anteriores, como utilizan más bytes, debo pulsar "intro" tantas veces como bytes haya.
Algo hago mal o no se configurar. Te pongo la función que utilizo y que quiero que me ayudes a arreglar. Más abajo te pongo otros datos de interés. Gracias de antemano. Saludos.
-------[funcion leeInt que valida enteros]---------------------------------
private static int leeInt()
{
Scanner teclado=new Scanner(System.in);
boolean intValido=false;int valido=-1;
do
{
try
{
valido=teclado.nextInt();
intValido=true;
teclado.close();
}
catch(Exception e)
{
System.out.println("Introduce un int valido");
}
teclado.nextLine();
}
while(!intValido);
return valido;
}
----------------------------------------------------------------
-----[ datos ] ------------------------------------------------
- NetBeans IDE 6.9.1
- Java 1.6.0_24, 64 bit server VM 19.1-b02
- Windows 7 6.1 64bits, es_ES(nb)

Añade tu respuesta

Haz clic para o