Foros del Web » Programación para mayores de 30 ;) » Java »

Problema system.in.read()

Estas en el tema de Problema system.in.read() en el foro de Java en Foros del Web. Buenas que tal estoy teniendo un problema con este metodo. Al ingresarlo por primera vez, anda perfecto, me deja escribir el dato, pero al estar ...
  #1 (permalink)  
Antiguo 24/09/2010, 20:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 0
Problema system.in.read()

Buenas que tal estoy teniendo un problema con este metodo.
Al ingresarlo por primera vez, anda perfecto, me deja escribir el dato, pero al estar en un cichlo while, este se repite nuevamente, y ya la segunda vez no me deja ingresar nada :S, luego cunado llega por 3era vez al while si me deja ingresar un nuevo dato, y asi otra vez no etc.
Dejo el codigo

Código:
while (continua == 1)
   {
       while(existe == 0)
        {
        System.out.println("\n Ingrese letra: ");
        opcion =(char)System.in.read(); 
        opcion = Character.toLowerCase(opcion);
        
                
              for(Object aux : usadas)
               {
                 if(aux.equals(opcion))
                 {
                  System.out.println("Este caracter ya fue usado!!!");
                  existe = 0;
                  break;
                 }
                 else
                 {
                   existe = 1;
                 }
               }
                  if(existe == 1)
                 {
                  usadas.add(opcion);
                 }
            }
             existe = 0;
             int i = 0;
             
             while((i <= tamaño) && (i != -1))
                {
                   if(palabraSeleccionada.indexOf(opcion,i) != -1)
                   {
                     i = palabraSeleccionada.indexOf(opcion,i);
                     letrasEncontradas[i]=i;
                     i++;
                   }
                   else
                   {
                       i = -1;
                   }
                }

             int a = 0;
             
             while(a < tamaño)
              {
                if((a<letrasEncontradas.length) &&(a == letrasEncontradas[a]))
                 {
                   System.out.print(opcion);
                   a++;
                 }
                 else
                {
               System.out.print("-");
               a++;
                  }
              }
  #2 (permalink)  
Antiguo 25/09/2010, 03:09
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema system.in.read()

Hola Krosty,

Nose donde esta el problema pero xk no pruevas a utilizar un Buffered?

Código:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
puedes utilizar el metodo ReadLine(); para leer toda una linea o el metodo Read();


Saludos,
Dani.
  #3 (permalink)  
Antiguo 25/09/2010, 15:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema system.in.read()

Ya probe mediante ese metodo pero no funcionaba, por eso trate de hacerlo con el System.in .
Estube depurando el programa y al parecer, al reiniciar el ciclo, donde se supone deberia pedirme nuevamente el caracter, ingresa un "\n" automaticamente, no tengo idea porque :S
Porfavor aver quien me echa una mano.
Saludos
  #4 (permalink)  
Antiguo 26/09/2010, 07:34
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problema system.in.read()

Eso te lo hará siempre, cuando introduces un caracter, pulsas Enter, y System.in.read() también lo tiene en cuenta. La solución es que antes de salir del bucle de tratamiento del caracter que te interesa, añadas un System.in.read(); que no usas para nada, pero te sirve para obviar el "\n"

De todas formas te recomiendo usar la clase Scanner, es múchisimo más cómoda.

http://download.oracle.com/javase/1....l/Scanner.html
  #5 (permalink)  
Antiguo 26/09/2010, 08:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema system.in.read()

Gracias por tu respuesta.
El tema es que yo quiero que el usuario solo tenga la posibilidad de ingresar un caracter, no multiples, por eso habia tratado de usar read() y no readline().
Como podria hacer para que solo se pueda ingresar un caracter en vez que una linea?
Muchas gracias
  #6 (permalink)  
Antiguo 26/09/2010, 09:22
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problema system.in.read()

Cita:
La solución es que antes de salir del bucle de tratamiento del caracter que te interesa, añadas un System.in.read(); que no usas para nada, pero te sirve para obviar el "\n"
o System.in.skip()

http://www.forosdelweb.com/f45/soluc...9/#post3533639

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:23.