2017-04-11 3 views
0

Ich bekomme eine StringIndexOutOfBoundsException für die Zeile lesen (line.charAt(0) == 'I'), wo es String index is out of range at 0 heißt.StringIndexOutOfBoundsException beim Auswerten der Dateieingabe?

Ich bin mir nicht sicher, was ich hier tun soll.

QueueLinkedList<Customer> eventqueue = new QueueLinkedList<Customer>(); 
QueueLinkedList<Customer> customerqueue = new QueueLinkedList<Customer>(); 
int numberserved = 0, totalidletime = 0, longestbreak = 0, idletime = 0, linelength = 0, longestline = 0; 

try { 
    File file = new File("customersfile.txt"); 
    BufferedReader reader = new BufferedReader(new FileReader(file)); 

    String line; 
    while ((line = reader.readLine()) != null) { 
     //empty lines 
     while ((line = reader.readLine()) != "") { 
      //first line of file 
      while ((line = reader.readLine()) != "300") { 
       Customer newcust = new Customer(); 
       if (line.charAt(0) == 'I') { 
        newcust.id = line.charAt(11); 
       } 
       else { 
        newcust.arrtime = line.substring(14); 
        newcust.setarrtimesecs(newcust.arrtime); 
        newcust.setleavingtime(newcust.arrtime);  
       } 
       eventqueue.enqueue(newcust); 
      } 
     } 
    } 
}catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

Warum verwenden Sie reader.readLine())! = Null warum nicht nur hasNextLine(), ich denke, Ihr Weg wird wirklich leere Zeilen halten –

Antwort

0

Diese Zeile ist leer, es gibt kein Zeichen im Index 0, dann ist diese Zeichenfolge leer. Sie ausführen diese Zeile:

line.charAt(0) == 'I' 

wie auf diese Weise versuchen,

if (line.trim().length() > 0 && line.charAt(0) == 'I') { 
0

In Ihrem zweiten while-Schleife Sie trim müssen, bevor zu "" Vergleich.

while ((line = reader.readLine().trim()) != "") { 

Und vergleichen Sie auch mit Gleichen, weil != Operator vergleicht, wenn Hinweise auf das gleiche Objekt zeigen.

Verwandte Themen