Thread: [JAVA]

  1. #1
    Matt.'s Avatar
    Registered
    08/01/03
    Location
    Gent
    Posts
    9,148
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/107

    [JAVA]

    Heb hier een probleempje, en vraag me af hoe ik dit correct kan oplossen.

    Code:
        public static void main(String[] args){
            String invoer1 = lees();
            String invoer2 = lees();
            System.out.println(invoer1+" "+invoer2);
        }
        
        public static String lees() {
            
            String regel = null;
            try {
                InputStreamReader isr = new InputStreamReader(System.in);
                BufferedReader in = new BufferedReader(isr);
                regel = in.readLine();
                in.close();
            } catch (Exception e){
                System.out.println(e);
            }
            return regel;
        }
    Krijg deze fout: java.io.IOException: Stream closed
    Iemand enig idee? Zeg niet gewoon de in.close(); weglaten want dat werkt inderdaad, maar is volgens mij niet de correcte manier om dit op te lossen.

    Thanks
    no votes  

  2. #2
    KenSpectre's Avatar
    Registered
    06/12/06
    Location
    Tongeren
    Posts
    1,880
    iTrader
    26 (100%)
    Mentioned
    0 Post(s)
    Normaal moet ge na de catch een finally block zetten waarin ge de stream closed. (kwestie dat als ge een exception hebt ge een resource leak krijgt )

    Of het het oplost weet ik nie zeker
    PSN:SpectreX15

    What doesn't kill me makes me stronger. What does kill me, I'll deal with when I respawn.
    I am root. If you see me laughing, you better have a backup!
    no votes  

  3. #3
    Ollie's Avatar
    Registered
    27/07/02
    Posts
    644
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by matthi_182 View Post
    This quote is hidden because you are ignoring this member. Show
    Heb hier een probleempje, en vraag me af hoe ik dit correct kan oplossen.

    Krijg deze fout: java.io.IOException: Stream closed
    Iemand enig idee? Zeg niet gewoon de in.close(); weglaten want dat werkt inderdaad, maar is volgens mij niet de correcte manier om dit op te lossen.

    Thanks
    Hoe denk jij van de System.in te lezen nadat je hem geclosed hebt misschien?
    no votes  

  4. #4
    Matt.'s Avatar
    Registered
    08/01/03
    Location
    Gent
    Posts
    9,148
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/107
    Ge moet daarvoor serieus niet zo betweterig reageren ze. Ik weet amper wat ik doe. Kan daar ook ni aan doen da mijne cursus ni zo uitgebreid is en ik geen tijd heb om boeken van 100'en blz te lezen over de theoretische kant (hoewel ze ons daar beter wel de tijd voor zouden geven).

    Hoe los ik dit dan op? Uiteindelijk moet ge uw stream toch closen..? Bestaat er een manier om die System.in dan weer te "initialiseren"?
    no votes  

  5. #5
    KenSpectre's Avatar
    Registered
    06/12/06
    Location
    Tongeren
    Posts
    1,880
    iTrader
    26 (100%)
    Mentioned
    0 Post(s)
    Quote Originally Posted by matthi_182 View Post
    This quote is hidden because you are ignoring this member. Show
    Ge moet daarvoor serieus niet zo betweterig reageren ze. Ik weet amper wat ik doe. Kan daar ook ni aan doen da mijne cursus ni zo uitgebreid is en ik geen tijd heb om boeken van 100'en blz te lezen over de theoretische kant (hoewel ze ons daar beter wel de tijd voor zouden geven).

    Hoe los ik dit dan op? Uiteindelijk moet ge uw stream toch closen..? Bestaat er een manier om die System.in dan weer te "initialiseren"?
    Als het op mij bedoeld was: Was echt mijn bedoeling niet om betweterig over te komen hoor

    Ik zat eig met files lezen in mn hoofd maar ik zie dat jij gewoon input vraagt aan een user?
    Kunt ge ook met scanner werken:

    Code:
    Scanner input = new Scanner(System.in);
    
    int number1;
    number1 = input.nextInt();
    En een system.in moet ge normaal niet closen (dacht ik)
    PSN:SpectreX15

    What doesn't kill me makes me stronger. What does kill me, I'll deal with when I respawn.
    I am root. If you see me laughing, you better have a backup!
    no votes  

  6. #6
    Ollie's Avatar
    Registered
    27/07/02
    Posts
    644
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by matthi_182 View Post
    This quote is hidden because you are ignoring this member. Show
    Hoe los ik dit dan op? Uiteindelijk moet ge uw stream toch closen..?
    Waarom? Je closed je System.out toch ook niet?
    no votes  

  7. #7
    forloRn_'s Avatar
    Registered
    23/11/03
    Location
    Landeurp
    Posts
    1,791
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    10/17
    Je hebt die InputStream toch zelf niet geopend? Je hebt de bestaande InputStream System.in meegegeven aan een hoop Readers ja, maar dan ga je die toch zelf niet sluiten?

    En nog een gratis tip: 't is not done om een exception gewoon te negeren. Je krijgt hier een IOException, je logt iets en voor de rest doe je gewoon alsof er niets gebeurd is: je print gewoon null af. Aangezien in.readLine() ook null kan teruggeven weet je hier niet of je stream beƫindigd is, of dat er iets is misgelopen.

    Voor dit eenvoudige voorbeeldje is dit beter:
    Code:
    public static String lees() throws IOException {
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      return in.readLine();
    }
    Ofwel laat je main() dan ook een IOException throwen, ofwel catch je ze in main() en print je een foutboodschap.
    no votes  

  8. #8
    Matt.'s Avatar
    Registered
    08/01/03
    Location
    Gent
    Posts
    9,148
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/107
    Quote Originally Posted by KenSpectre View Post
    This quote is hidden because you are ignoring this member. Show
    Als het op mij bedoeld was: Was echt mijn bedoeling niet om betweterig over te komen hoor

    Ik zat eig met files lezen in mn hoofd maar ik zie dat jij gewoon input vraagt aan een user?
    Kunt ge ook met scanner werken:

    Code:
    Scanner input = new Scanner(System.in);
    
    int number1;
    number1 = input.nextInt();
    En een system.in moet ge normaal niet closen (dacht ik)
    't Was niet op u, gij gaf tenminste een mogelijke oplossing.
    Soit, gewoon niet closen dus.

    Thanks all. (Ook voor de overige info!)
    no votes  

  9. #9
    djbramz's Avatar
    Registered
    17/07/06
    Location
    Wetteren
    Posts
    2,065
    iTrader
    32 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/12
    En anders als je files probeert in te lezen gewoon closen in een finally statement, zo wordt er ook gesloten als er iets fout gaat.
    Jawadde, ge hebt ui ook laten slieren?
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in