12. juni 2006 - 13:38
Der er
25 kommentarer og 1 løsning
Problem med substring
Hej Eksperter, Jeg forstår ikke hvad der er galt med det her String [] tegn = new String[224]; String [] kode = new String[224]; int i = 0; while (!eof) { String line = buff.readLine(); if (line == null) eof = true; else // System.out.println(line); // tegn[i] = line; tegn[i] = line.substring(1,1); kode[i] = line.substring(3,line.length()); // System.out.println(tegn[i]); i++; } Jeg får denne fejl java.lang.StringIndexOutOfBoundsException: String index out of range: -2
Annonceindlæg tema
Der er ingen problemer med tegn[i] = line;
en linie fra en fil. f.x. a=kjrfbwuibfuisbuwbeubfw
prøv og udskriv line i din while løkke din kode skal jo dø hvis længden af line er mindre end 3
prøv og udskriv man har før hørt om en blank linie i bunden af en fil
Det ser tilsyneladende rigtigt ud. Er der en måde man kan få at vide hvor mange linier der er i en fil
Ville det være smartere at gøre noget i den her retning? Vector tegn = new Vector(); Vector kode = new Vector(); int i = 0; while (!eof) { String line = buff.readLine(); if (line == null) eof = true; else System.out.println(line); tegn.addElement(line.substring(1,1)); kode.addElement(line.substring(3,line.length())); i++; }
12. juni 2006 - 14:27
#10
Det løser dog ikke mit problem.
12. juni 2006 - 15:01
#11
Vector er bedre , men ArrayList er endnu bedre
12. juni 2006 - 15:05
#12
den doer paa =fajsrgnjgsrjnsg ??
12. juni 2006 - 15:07
#13
Det sidste var bare en kikser. Jeg tror jeg forsøger mig med Vector i første omgang. Jeg har prøvet at skrive indholdet af et af arrays ud. Jeg får værdierne som står i filen med til sidst er der en NULL
12. juni 2006 - 15:16
#14
ahh proev og erstat while (!eof) { String line = buff.readLine(); ... } med den klassiske: String line; while ((line = buff.readLine()) != null) { ... }
12. juni 2006 - 15:33
#15
Det virkede. Jeg forstår bare stadig ikke hvorfor den anden måde åbenbart kørte løkken igennen en gang mere end der var linier?
12. juni 2006 - 15:34
#16
Det her virker String line; while ((line = buff.readLine()) != null){ if (line == null) eof = true; else tegn.addElement(line.substring(0,1)); kode.addElement(line.substring(2,line.length())); System.out.println(tegn.elementAt(i)); System.out.println(kode.elementAt(i)); System.out.println("i er: "+i); i++; }
12. juni 2006 - 15:43
#17
jeg tror faktisk ogsaa at det virker med nogle {} while (!eof) { String line = buff.readLine(); if (line == null) eof = true; else { // <---- tegn[i] = line.substring(1,1); kode[i] = line.substring(3,line.length()); i++; } // <---- }
12. juni 2006 - 15:44
#18
men den anden maade med while loekken er en standard maade at goere det paa som jeg klart kan anbefale det goer koden nem at forstaa for andre
12. juni 2006 - 15:49
#19
Er det her en okay måde at gøre det på. Det virker i hvert tilfælde while ((line = buff.readLine()) != null){ if (line == null){ eof = true; } else { if(line.length()>2){ tegn.addElement(line.substring(0,1)); kode.addElement(line.substring(2,line.length())); System.out.println(tegn.elementAt(i)); System.out.println(kode.elementAt(i)); System.out.println("i er: "+i); i++; } }
12. juni 2006 - 15:55
#20
mange tak for hjælpen. Nu kan jeg komme lidt videre :-)
12. juni 2006 - 16:04
#21
det er dobbelt konfekt enten skal du bruge den while med assignment inden i eller du skal bruge if og eof variabel - der er ingen grund til at bruge begge
12. juni 2006 - 16:20
#22
jeg ligger ogsaa lige et svar
12. juni 2006 - 16:33
#23
Hvad nu hvis filen ser således ud. Jeg kan ikke lige overskue det. a=ikbfufwbuifw b c=kjbsrfjkbv
12. juni 2006 - 22:55
#24
Jeg går ud fra buff er en BufferedReader. I så tilfælde returnerer den ikke null ved EOF, men "" (den tomme streng)
12. juni 2006 - 23:04
#25
forkert
http://java.sun.com/j2se/1.5.0/docs/api/java/io/BufferedReader.html readLine
public String readLine()
throws IOException
Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.
Returns:
A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
12. juni 2006 - 23:21
#26
Du har ret Arne.
Kurser inden for grundlæggende programmering