Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    JAVA - problema classe gestione IO

    Ciao ragazzi,
    Mi sono fatto una classe di gestione dell'input il problema è che non riesco a fare delle chiamate al metodo di lettura del buffer in sequenza.
    In pratica mi legge solo la prima lettura e poi mi salta le altre.
    Ho notato che chiudendo il buffer e reinzializzandolo il problema si risolve.

    Il mio problema sta nel mettere la reinizializzazione del buffer all'interno della classe dell'input.
    Ho provato in questo modo
    Codice PHP:
    public class Input{
        private 
    InputStreamReader sin;
        private 
    BufferedReader buf;
        
        public 
    Input(){
            
    sin = new InputStreamReader(System.in);
            
    buf = new BufferedReader(sin);
        }
        
        public 
    String readLine(){
            
    boolean flag false;
            
    String arg "";
            while(!
    flag){
                try{
                    if(
    buf == null){
                        new 
    Input();
                    }        
                    
    arg buf.readLine();
                    
    flag true;
                    
    finalize();
                }catch(
    IOException ex){
                    
    System.err.println(ex);
                }
            }
            
            return 
    arg;
        }
        
        public 
    int readInt(){
            
    boolean flag false;
            
    int arg 0;
            while(!
    flag){
                try{
                    if(
    buf == null){
                        new 
    Input();
                    }
                    
    arg buf.read();
                    
    flag true;
                    
    finalize();
                }catch(
    IOException ex){
                    
    System.err.println(ex);
                }
            }
            
            return 
    arg;
        }
        
        public 
    void finalize(){
            try{
                
    sin.close();
                
    buf.close();
            }catch(
    IOException ex){
                
    System.err.println(ex);
            }
            
    sin null;
            
    buf null;
        }

    Ma mi rimanda un NullPointerException in quanto non riesce a reinizializzare l'oggetto dal debug ho visto che all'interno dei metodi read quando buf e sin sono null mi salta l'if che richiama il costruttore di classe.

    Come posso fare?

    Ciao

  2. #2
    Non è necessario che tu chiuda il flusso di stream dopo ogni lettura.
    Puoi lasciarlo aperto e richiamare il finalize prima di chiudere il programma.
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  3. #3
    Si ma se non chiudo il flusso di stream non mi funziona più di una chiamata ai metodi di lettura dal flusso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.