Foro de elhacker.net

Programación => Java => Mensaje iniciado por: novalida en 7 Junio 2009, 13:51 pm



Título: duda básica con método available()
Publicado por: novalida en 7 Junio 2009, 13:51 pm
Hola!!
supongo que esto sea una pregunta bastante sencilla, pero he intentado buscar info al respecto y no he conseguido solucionar el problema.

el programa en cuestión tiene que leer un caracter, visualizarlo y luego otra vez lo mismo, leer y visualizar.

el problema es que he buscado la manera de saltar los caracteres de retroceso de carro y salto de línea, encontrando la siguiente solución:

Código:
ncars = flujoE.available();
flujoE.skip(ncars);


lo que me ocurre es que me da un error, ay que no reconoce el método available() definido en el tipo BufferedReader (es el error que me da el compilador).

el código completo:

Código:
import java.io.*;

public class CTest {

public static void main (String[]args)
{
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader flujoE = new BufferedReader (isr);
PrintStream flujoS = System.out;

char car = 0;
int ncars;

try
{
flujoS.print("Caracter: ");
car = (char)flujoE.read();
flujoS.println(car);

ncars = flujoE.available();
flujoE.skip(ncars);

flujoS.print("Caracter: ");
car = (char)flujoE.read();
flujoS.print(car);
}

catch(IOException e)
{

}
}
}

sé que puede ser una tontería, pero como tengo muy poquita experiencia con Java (algo más con C) no doy con la solución
muchas gracias :)


Título: Re: duda básica con método available()
Publicado por: Chuidiang en 27 Junio 2009, 16:05 pm
El problema es sencillo, BufferedReader no tiene método available(). Tedndrás que buscar otra solución: usar otra cosa que no sea BufferedReader y tenga método available o bien pensar otra forma de leer y evitar el retorno de carro.

Por ejemplo, puedes usar directamente el InputStreamReader y saltarte el BufferedReader, o mejor aún, usar directamente el System.in

Se bueno.


Título: Re: duda básica con método available()
Publicado por: maldillo en 1 Julio 2009, 20:02 pm
// Aqui el código. Espero que solucione tu inquietud "novalida"

package pak;

import java.io.*;

public class CTest {
   
   public static void main (String[]args)
   {
      InputStreamReader isr = new InputStreamReader (System.in);
      BufferedReader flujoE = new BufferedReader (isr);
      PrintStream flujoS = System.out;
      
      String car = "";
      
      try
      {
         
         

         flujoS.print("Caracter: ");
         car = flujoE.readLine();
         flujoS.println(car);
         
         
         flujoS.print("Caracter: ");
         car = flujoE.readLine();
         flujoS.println(car);
         
         
         
         
      }
      
      catch(IOException e)
      {
         
      }
   }
}

//Roberto