Thread: [JAVA]
-
18-12-2008, 22:35 #1Member
- 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.

Krijg deze fout: java.io.IOException: Stream closedCode: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; }
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.
Thanksno votes
-
-
18-12-2008, 22:52 #2Approved 9-lifer
- 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 zekerPSN: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
-
19-12-2008, 00:06 #3no votes
-
19-12-2008, 01:02 #4Member
- 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
-
19-12-2008, 02:17 #5Approved 9-lifer
- Registered
- 06/12/06
- Location
- Tongeren
- Posts
- 1,880
- iTrader
- 26 (100%)
- Mentioned
- 0 Post(s)
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:
En een system.in moet ge normaal niet closen (dacht ik)Code:Scanner input = new Scanner(System.in); int number1; number1 = input.nextInt();
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
-
19-12-2008, 09:44 #6no votes
-
19-12-2008, 10:37 #7Member
- 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:
Ofwel laat je main() dan ook een IOException throwen, ofwel catch je ze in main() en print je een foutboodschap.Code:public static String lees() throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); return in.readLine(); }no votes
-
19-12-2008, 11:46 #8Member
- Registered
- 08/01/03
- Location
- Gent
- Posts
- 9,148
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/107
no votes
-
19-12-2008, 11:58 #9Approved 9-lifer
- 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


