26. marts 2002 - 15:07
Der er
17 kommentarer og 3 løsninger
løkke problem
ok jeg har dette: boolean open = true; while(open) { String reader = fileIn.readString(); if(reader.equals("{")) { open=false; } else { fileWrite.println(reader); } } løkken stopper når reader møder { men hvordan får jeg open = true til at virke sådan så løkken køre videre når den møder } ??
Annonceindlæg fra Partnertekst
26. marts 2002 - 15:27
#1
Den kører da videre når den møder en "}" som det er nu?
26. marts 2002 - 15:47
#2
nej det gør den desvære ikke løkken stopper og det skulle den helst ikke gøre!
26. marts 2002 - 16:21
#3
farlig måde at læse fra en fil på, du får en IOException når du rammer enden af filen.
26. marts 2002 - 16:26
#4
bare rolig det har jeg taget forbehold for jeg har nemlig try{}catch (EOFException e){} omkring løkken!
26. marts 2002 - 16:27
#5
Men sig mig er der ikke en måde det kan gøres på?
26. marts 2002 - 16:28
#6
Og glemte at sige så har jeg throws IOException på contructoren
26. marts 2002 - 16:29
#7
Jamen er det så ikke bare fordi der kastes en IOException som du bare ikke får skrevet ud. Der skal mere kode til for at afgøre det.
26. marts 2002 - 16:33
#8
import javagently.*; import java.io.*; class ReadText { Stream fileIn = new Stream("text.dat",Stream.READ); Stream fileWrite = new Stream("redigeret.dat",Stream.WRITE); boolean open=true; ReadText()throws IOException { try { while(open) { String reader = fileIn.readString(); if(reader.equals("{")) { open=false; } else { fileWrite.println(reader); } } } catch (EOFException e){} } public static void main(String[] aslan)throws IOException { new ReadText(); } }
26. marts 2002 - 16:42
#9
Du må få læst hele filen igennem og så bliver der kastet en IOException, men den fanger du selv og derfor bliver du ikke gjort opmærksom på det.
26. marts 2002 - 16:45
#10
Iøvrigt hvis du selv vil fange en exception så behøver du ikke at erklære den, du skal blot ændre dit catch til catch (IOException ioe) {} og så gøre hvad der skal til, men i dette tilfælde er det nok bedst ikke at fange noget overhovedet.
26. marts 2002 - 16:46
#11
Jamen hvordan skulle jeg ellers køre hele filen igennem uden try{}catch (EOFException e){} ??
26. marts 2002 - 16:50
#12
Hvis du vil læse en tekst fil igennem så er dette en god fremgangsmåde: FileReader fr = new FileReader( "minfil" ); BufferedReader r = new BufferedReader( fr ); String s; while ( ( s = r.readLine() ) != null ) { // gør noget med den linie du lige har læst } r.close();
26. marts 2002 - 20:01
#13
ok inden i alle sammen hidser jer op:)så se lige på hvad jeg er kommer frem til: boolean open=true; while(open) { String reader = fileIn.readString(); if(reader.equals("stop")) break; else if(reader.equals("{")) open=false; else if(reader.equals("}")) open=true; if(open) fileWrite.println(reader); } Dette er så teksten jeg læser fra text.dat: Sample input This is the same length as the comment { This assured comment is the same length as the } rest assured { And so stop Dette er så output redigeret.dat: Sample input This is the same length as the comment Som i kan se mangler jeg stadig de to ord : rest assured Nogen ideer? Og jeg har droppet try{}catch (EOFException e){}
26. marts 2002 - 21:05
#14
Jeg vil ikke udtale mig om din måde at læse filen på, men jeg vil forsøge at hjælpe med det du har. Problemet er at du bruger den samme boolean (open) til at styre om du skal skrive ud og om du skal fortsætte løkken. Du må holde de to ting adskilt. Som jeg forstår det du skriver ønsker du at genoptage udskrivningen når du læser et '}'. Prøv med dette: boolean open=true; while(true) { String reader = fileIn.readString(); if(reader.equals("stop")) break; else if(reader.equals("{")) open=false; else if(reader.equals("}")) open=true; if(open) fileWrite.println(reader); } Men bemærk! Det er ikke smart at din kode forlader sig på at der sidst i filen står "stop". (Så fik jeg udtalt mig alligevel) Prøv at kigge lidt på eksemplet i kommentaren fra Carsten Knudsen.
26. marts 2002 - 21:10
#15
Man må IKKE bruge exception til sådanne noget !!!!! Det strider imod al sund fornuft og god programmering
26. marts 2002 - 21:20
#16
Min lærer har ellers lært mig at man skal.. det samme gjorde den lære bog vi havde... javagently
26. marts 2002 - 21:21
#17
Enig. Jeg henviser mere præcist til Carsten Knudsens kommentar fra kl. 16:50:59
26. marts 2002 - 21:32
#18
Jeg er ikke helt med ... det han snakker om kan jeg ikke bruge i det her sammenhæng der jeg bruger pakken javagently
26. marts 2002 - 21:42
#19
Hvis du _skal_ bruge Stream fra javagently, så har du nok ret. Den lægger vist op til at man fanger en EOFException når filen er slut.
26. marts 2002 - 21:44
#20
Ok den endelige løsning efter så mange forsøg og kommentar fra hjælpsomme mennesker er: while(true) { String reader = fileIn.readString(); if(reader.equals("stop")) break; else if(reader.equals("{")) open=false; else if(reader.equals("}")) open=true; if(open && !reader.equals("}")) fileWrite.println(reader); } Tak allesammen det var lærerigt!
Kurser inden for grundlæggende programmering