[JAVA] fout bij inlezen bestand in array

Pagina: 1
Acties:

  • ProudElm
  • Registratie: Juni 2003
  • Laatst online: 11:36
hoi,

ik heb ergens een fout zitten hier in, de compiler van JCreator geeft geen foutmeldingen, maar in de dosbox van het java applet komt de volgende fout te voorschijn:

java.lang.StringIndexOutOfBoundsException : String index out of range: -1
at java.lang.Strin.substring<String.java:1444>
at test2.init<test2.java:30>
at sun.applet.AppletPanel.run<AppletPanel.java:353>
at java.lang.Thread.run<Thread.java:534>

de fout zou dus moeten zitten in regel 30 en dat is deze regel
code:
1
vraag[index] = line.substring(0,line.indexOf(","));


voor het gemak de rest van het blokje ook ff
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public void init() {    
    
    try { 
        
      BufferedReader in = new BufferedReader(new FileReader("vragen.txt"));
    
        String line; 
        int index = 0; 
        while((line = in.readLine()) != null) 
        { 
        System.out.println(line);
    
        vraag[index] = line.substring(0,line.indexOf(",")); 
    
        antwoord[index] = line.substring(line.indexOf(",") + 1, line.length()); 
    
        index++; 
    
        }   
        
        } 
        
        catch(IOException ioe) 
        { 
        ioe.printStackTrace(); 
        }


ik zou niet weten wat er fout is aan regel 30..:S als ik er namenlijk " // " voor zet gaat het progamma namenlijk gewoon verder..:S

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Geeft line.indexOf(",") geen -1 terug als die komma niet voorkomt in de tekst? Lijkt me niet dat je van teken 0 tot teken -1 van een string kan lezen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ProudElm
  • Registratie: Juni 2003
  • Laatst online: 11:36
maar die komma komt wel voor in de tekst.

het tekst bestand:

code:
1
2
3
4
5
6
7
8
9
10
Waterstof,hydrogen
Boor,boron
Koolstof,carbon
Zuurstof,oxygen
Natrium,sodium
Aluminium,aluminum
Zwavel,sulfur
Chloor,chlorine 
Goud,gold
IJzer,iron


die richting zat ik ook al te denken, maar loop dan zelf vast..:S

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Staan er ook geen lege regels in het bestand?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ProudElm
  • Registratie: Juni 2003
  • Laatst online: 11:36
SUPER SUPER!! _/-\o_ _/-\o_

onder aan het bestand stonden 2 lege regels... |:( |:( |:( |:(

bedankt.. nu kan ik de opdracht toch nog morgen inleveren..:D

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Je kan er natuurlijk ook een check induwen. Ter vervanging van de regels 13 en 15 in het blokje hierboven kun je dit zetten:
Java:
1
2
3
4
5
6
7
8
        hulp = line.indexOf(",");
        if (hulp > 0) {
                vraag[index] = line.substring(0,hulp); 
                antwoord[index] = line.substring(hulp + 1, line.length());
        } else {
                vraag[index] = "";
                antwoord[index] = "";
        }

Zoiets ofzo. :P

[ Voor 11% gewijzigd door NMe op 03-02-2005 23:26 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ProudElm
  • Registratie: Juni 2003
  • Laatst online: 11:36
ja, ben allang blij dat ie zo werkt..:P maar als ik nog zin heb vanavond zal ik ff kijken of me dat nog wilt lukken.. thanx

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 15-05 11:05
-NMe- schreef op donderdag 03 februari 2005 @ 23:25:
Je kan er natuurlijk ook een check induwen. Ter vervanging van de regels 13 en 15 in het blokje hierboven kun je dit zetten:
Java:
1
2
3
4
5
6
7
8
        hulp = line.indexOf(",");
        if (hulp > 0) {
                vraag[index] = line.substring(0,hulp); 
                antwoord[index] = line.substring(hulp + 1, line.length());
        } else {
                vraag[index] = "";
                antwoord[index] = "";
        }

Zoiets ofzo. :P
Of een try {} catch() {} block
Dan hoef je geen lege vraag/antwoorden te maken.

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 11-05 17:32
TukkerTweaker schreef op vrijdag 04 februari 2005 @ 09:48:
[...]


Of een try {} catch() {} block
Dan hoef je geen lege vraag/antwoorden te maken.
Zou ik niet doen. Met condities de boel controleren is altijd beter dan een onnodige try catch er in te plakken

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15-05 08:48

Janoz

Moderator Devschuur®

!litemod

Try catch lijkt me nogal overdreven. Het gaat gewoon fout omdat er geen item meer gevonden wordt en de indexOf gewoon keurig -1 teruggeeft zoals ook in de documentatie te vinden is. Als je er vervolgens gewoon vanuit gaat dat hij wel gevonden zou zijn en dit proberen af te vangen met een catch vind ik persoonlijk nogal lelijk.

Als je bij de code van NME de index++ binnen de if haalt en de else leeglaat worden er ook geen lege items ingevuld.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1