Duda con método available()

Iniciado por novalida, 10 Agosto 2009, 22:04 PM

0 Miembros y 1 Visitante están viendo este tema.

novalida

hola!!!
tengo el siguietne código extraído de un ejercicio de Fco. Javier Ceballos ("Java 2: Curso de programación"):
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)
{

}
}
}



el problema y duda que tengo es que la línea :
ncars = flujoE.available();

produce un error ya que el método available() no está definido para el tipo BufferedReader.

En un ejemplo del libro el código es así tal cual( no lo he modificado), sin embargo cuando intento compilar el programa me lanza el error en dicha línea. Es una errata del libro o estoy haciendo algo mal???
por otro lado he sustituido ese intento de vaciar el buffer con:
System.in.skip(System.in.available());
pero no se vacía el buffer. En este otro caso por qué no funciona el vaciado???

Gracias y espero respuesta :)

1mpuls0

#1
Hola mira no estoy seguro de que es lo que quieres hacer, lo unico que entiendo es que estas manejando entrada y salida de datos, trate de revisar tu codigo.


Citarimport java.io.*;
import java.io.FileInputStream;
import java.util.*;

public class CTestF {
   
   public static void main (String[]args)throws Exception
   {
      InputStreamReader isr = new InputStreamReader(System.in);
       BufferedReader br = new BufferedReader (isr);      
      PrintStream flujoS = System.out;
      
      InputStream iS = new FileInputStream("Hola.txt");//usando el metodo available()
      
      char car = 0;
      //int ncars;
      int tam;
      //int s1;
      //String cad="";
      
      try
      {
         //1
         flujoS.print("Caracter: ");
         car = (char)br.read();
         flujoS.println(car);
         
         //2
         tam = Integer.parseInt(br.readLine());  //el metodo readLine() pertenece a la clase BufferedReader
         br.skip(tam);
         
         //3
         tam = iS.available(); //el metodo available es de la clase InputStream
         br.skip(tam);//el metodo skip pertenecen a la clase System
         
         //4
         flujoS.print("Caracter: ");
         car = (char)br.read();
         flujoS.print(car);
         
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

Me funciona...
Pero...

Lo que no entiendo es por que si dejo todo asi como está no funciona, pero si por ejemplo dejo entre comentarios 3 de ellos [cual se] si funcion  :-\

Te dejo estas paginas para que veas bien sobre estos temas.

http://www.cica.es/formacion/JavaTut/Cap8/entrada.html

http://www.java2s.com/Code/JavaAPI/java.io/FileInputStreamavailable.htm

http://www.altatorre.com/webclase/java/tramas.htm

Bueno solo espero no haberte confundido.

Saludos.

abc

Debci

si no me equivoco es objeto.isAvailable , y este devuelve un Booleano o binario tipo true o false (0 o 1), no stoy del todo seguro.

saludos