[Erreur BuffReader] pkoi ca boucle?

pkoi ca boucle? [Erreur BuffReader] - Java - Programmation

Marsh Posté le 15-02-2005 à 22:20:36    

Salut a tous,
alors voila j'ai recup une classe de lecture d'1 ligne (d'1 entier) au clavier, et comme a l'execution cette classe foire, je rebosse dessus car elle est vraiment pas top. Mais elle ne marche toujour pas. Au début je pensais a une erreur classique de flux non fermé (car il n'était pas fermé dans l'ancienne classe) mais mon erreur persiste...  
donc je vous présente mes bouts de codes qui me posent problemes...  
 

Code :
  1. private static BufferedReader keyboard=new BufferedReader(new InputStreamReader(System.in));
  2.      
  3.     private static String getLine() {
  4.         String line;
  5.         try{
  6.            
  7.             line=keyboard.readLine();
  8.            
  9.         }catch(IOException e)
  10.         {
  11.             return "";
  12.         }
  13.         return line;
  14.     }
  15.      
  16.     public static int getInt()
  17.     {
  18. int val;
  19. try{
  20.  return Integer.parseInt(getLine());               
  21. }
  22.         catch(NumberFormatException e)
  23.         {
  24.             System.err.println("Error : Format Exception : " + e);           
  25.             return -1;
  26.         }
  27.         finally
  28.         {
  29.             close();
  30.         }
  31.     }
  32.    
  33.     private static void close()
  34.     {
  35.         try{
  36.         keyboard.close();}
  37.         catch(IOException ioe)
  38.         {
  39.             System.err.println("Error Closing stream" );
  40.         }
  41.     }


 
et donc voici comment je m'en sert dans une autre applet  :
int tmp = NewKeyboard.getInt();    
 
et ca me sort "null". Donc a prioris en regardant la doc et en faisant mes tests, l'erreur provient de

Code :
  1. line=keyboard.readLine();

qui remplit line a null. bon ok. mais pourquoi ?
Je n'ai meme pas le temps de rentrer quoique ce soit au clavier, le flux est deja remplit!!!!
 
merci a celui qui pourra me filer un coup de pied! euhhhhh un coup de main je voulais dire!
 
gian

Reply

Marsh Posté le 15-02-2005 à 22:20:36   

Reply

Marsh Posté le 15-02-2005 à 23:58:34    

comment ca peut te sortir "null" alors que tu demande un int ? :/
 
 
et tu crois faire quoi en faisant un close de System.in [:petrus75]

Reply

Marsh Posté le 16-02-2005 à 10:22:17    

Aucune idée pour le close du System.in... mais le line=keyboard.readLine();  me sors "null" a chaque fois, j'ai meme pas le temps de faire une saisie.... impressionant donc.

Reply

Marsh Posté le 16-02-2005 à 10:29:02    

t'aurais pas closé keyboard quelque part avant ?


Message édité par benou le 16-02-2005 à 10:32:37

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-02-2005 à 10:31:40    

j'ai regardé et ... non, tu as toute la classe la. j'ai enlevé les closes et ca rend pareil...
 
c bluffant, ca marche sur un autre pc, et pas sur celui la...


Message édité par Giansolo le 16-02-2005 à 10:32:02
Reply

Marsh Posté le 16-02-2005 à 10:33:16    

t'es sûr que c'est le bon .class que tu executes ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-02-2005 à 10:36:02    

bouais, le projet tourne bien, et me sors bien le null quand je print le readline. j'ai cleané et recompilé mais c pareil

Reply

Marsh Posté le 16-02-2005 à 10:45:56    

en essayant avec un read(), meme topo, ca me renvoit -1, aucune saisie possible, pas de close avant.

Reply

Marsh Posté le 16-02-2005 à 11:07:04    

c'est space ton histoire ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-02-2005 à 11:08:43    

bah grave....

Reply

Marsh Posté le 16-02-2005 à 11:08:43   

Reply

Marsh Posté le 21-02-2005 à 16:53:24    

Dit donc par hasard ça le ferait pas quand tu appelle une deuxième fois le getInt, hein pas ce que après la première fois tu close ton buffer qui est en static, donc c'est normal que quand tu rappelle il te pete une erreur.
 
Comme ton code est fait tu ne peux appeler qu'une seul fois getInt...
Ca me parait bizarre comme code, enfin bon.
Par contre si ça plante sur le premier appelle, je ne vois pas pourquoi, ça marche très bien chez moi.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed