2016-06-30 7 views
2

Ich habe eine TXT-Datei mit, zum Beispiel, dieser Inhalt:Java - Werden nicht Dateiinhalt auslesen

variable1="hello"; 
variable2="bye"; 
testing3="parameter"; 
whatisthis4="hello"; 
var5="exampletext"; 
example=3; 
wellthen=8; 
--- 

Es ist in der Datei zu lesen, Zeile für Zeile, gut, bis ich einen Weg hinzugefügt Speichern der Daten

Dieser ganze Code plus ein anderer Leser (natürlich mit anderen Variablennamen) ist in eine try-catch-Anweisung eingebettet.

String path_playlist = new File("").getAbsolutePath(); 
String fileName_playlist = path_playlist 
     + "/src/dancefusion/game/playlist.txt"; 
FileReader fr_playlist = new FileReader(fileName_playlist); 
BufferedReader br_playlist = new BufferedReader(fr_playlist); 

int track_counter = track_sum*9; 
String trackinfos[] = new String[track_counter]; 

while(track_counter < 0) 
{ 
    System.out.println("linecount="+track_counter); 
    trackinfos[track_counter] = br_playlist.readLine(); 
    System.out.println(trackinfos[track_counter]); 
    track_counter--; 
} 
System.out.println(Arrays.toString(trackinfos)); 

In diesem Beispiel track_sum gleich 1.

Die while-Schleife in einer Zeit, in der Datei eine Zeile lesen sollte, aber nur liest null ist:

[null, null, null, null, null, null, null, null, null] 

Update 1:

Die while-Bedingung wurde falsch eingerichtet. .. Vielen Dank!

Die korrigierte Version:

while(track_counter < 0) 

Doch jetzt gibt es mir eine Ausnahme mit einem "ArrayOutOfBounds: 9".

Irgendwelche Vermutungen?


Schluss Update:

Wie @GiorgiMoniava erwähnt, ich mit 0 dank track_counter nach dem anderen vor, wie in Java-Arrays lesen beim Start beginnen reduzieren muß nur zu!

int track_counter = track_sum*8; 
String trackinfos[] = new String[track_counter]; 

track_counter--; 

while(track_counter >= 0) 
{ 
    System.out.println("linecount="+track_counter); 
    trackinfos[track_counter] = br_playlist.readLine(); 
    System.out.println(trackinfos[track_counter]); 
    track_counter--; 
} 

von euch vielleicht herausfinden kann, was ich falsch gemacht haben ...

Natürlich kann ich weitere Informationen/Code liefern, wenn nötig! Vielen Dank im Voraus!

+1

vielleicht ein Tippfehler? while (track_counter> 0) – Apostolos

Antwort

3

Das sieht seltsam

while(track_counter < 0) 

Sind Sie sicher, dass Schleife jemals in eingegeben wird? Es ist meine Vermutung (von Ihrer Ausgabe), dass track_counter 9.

Über Ihr Array außerhalb der Grenzen Ausnahme ist: Wenn Sie Array der Größe erstellen N Sie können es nur Indizes mit Zugriff: [0, N-1]

+0

es macht keinen Sinn, da er auch einen Arrayindex mit diesem track_counter referenziert, der, wenn er eingegeben wird, <0 ist. aber ich glaube nicht, dass er diesen Teil – Apostolos

+0

@Apostolos ich auch nicht Schleife wird eingegeben; ps.kein Java-Experte, nur eine Vermutung –

+0

Danke, das hat den ersten Teil gelöst - jetzt scheint es, dass es die Schleife eintritt - aber ich bekomme eine ArrayIndexOutOfBoundsException: 9 Irgendwelche Idee, wie Sie das auch loswerden? Danke! –

1

versuchen Sie dies

while(track_counter > 0) 
    { 
     System.out.println("linecount="+track_counter); 
     track_counter--; 
     trackinfos[track_counter] = br_playlist.readLine(); 
     System.out.println(trackinfos[track_counter]); 

    } 
+0

Danke, dass du mir geholfen hast - aber @GiorigeMoniava hat es zuerst: S –

+0

ok das hält dich davon ab, die Antwort zu verbessern, um hilfreich zu sein. natürlich kannst du giorrgis antwort annehmen :) – Apostolos

+0

Ich habe natürlich beide antworten :) Leider heißt es, dass meine Stimmen nicht sichtbar sein werden, da ich immer noch unter 15 Rufpunkten bin: S –