2016-06-12 2 views
-1

Ich versuche, eine tabulatorgetrennte Textdatei in ein 2D-Array zu importieren, aber beim Versuch, die Werte des geteilten Strings dem Array zuzuordnen, erhalte ich den Fehler " Array erforderlich, aber String gefunden ".Java-Fehler "Array erforderlich, aber String gefunden" beim Importieren der Textdatei

Hier ist mein Code so weit:

try { 
      FileReader fr = new FileReader ("Laberinto.txt"); 
      BufferedReader br = new BufferedReader(fr); 

      String s,str; 
      String[] buffer; 

      int y=0; 

      while ((s=br.readLine())!= null){ 
       StringBuilder builder = new StringBuilder(); 
       str=builder.append(s).toString(); 
       buffer=str.split("\t"); 

       for (int x=0;x<str.length();x++){ 
        this.lab[x][y]=Integer.parseInt(str[x]); 
       } 

       y++; 
      } 
} 

ich den Fehler auf der Linie this.lab[x][y]=Integer.parseInt(str[x]);

auch bekommen, ich weiß nicht, ob dies überhaupt hilft, aber die Datei ist im Grunde ein Bündel von 1s und 0s, die ein Labyrinth bilden (1 sind die Wände und 0 die Korridore), die durch einen Tabulator begrenzt sind.

Kann mir bitte jemand sagen, was ich falsch mache?

Vielen Dank im Voraus!

+0

Ich sehe nicht einmal, dass Sie Ihr Array initialisiert haben. – Apurva

+0

Bitte entfernen Sie Ihren nutzlosen 'StringBuilder' und benutzen Sie' buffer = s.split ("\ t") 'zuerst. Ihr Code ist zu verschleiert. – Axel

Antwort

1

str ist ein String - eine Zeile von Ihrem Eingang ... Das ist nicht, was Sie wollten.

Sie benötigen analysieren buffer:

for (int x=0;x<buffer.length();x++){ 
    this.lab[x][y]=Integer.parseInt(buffer[x]); 
} 
+0

OH **** Ihr Recht ich bin so ein Idiot das ist, was ich bekomme um dies spät nachts zu kodieren, danke! –

2

parseInt(str[x])

Sie nicht Array-Indizes verwenden können: [], zu Index in eine String, und offensichtlich str ist ein String.
Für eine Lösung möchten Sie vielleicht mit charAt() und dann String.valueOf(char), die die char zurück konvertieren, falls Sie es brauchen, in Betracht ziehen.

+0

ich versuche tatsächlich, den Wert dem Array lab nicht zu str zuweisen D: –

+0

Versuchen Sie, meine Antwort erneut zu lesen und zu verstehen, warum es richtig ist. – Idos

+0

Egal, ich weiß, was ich falsch gemacht habe, ich hätte meinen Puffer nicht str analysieren sollen - das ist, was ich für die Codierung spät in der Nacht lol danke sowieso –

1

Sie str wie folgt deklariert:

String s,str; 

und versucht, es wie folgt zu verwenden:

this.lab[x][y]=Integer.parseInt(str[x]); 

Die Erklärung erklärt es als String. Die Verwendung (siehe die RHS der = !!) versucht, es als ein Array von String zu verwenden.


Eigentlich denke ich, Ihr echter Fehler ist, dass Sie versuchen, die falsche Sache zu analysieren. Ich denke, es sollte wahrscheinlich das sein:

buffer=str.split("\t"); 
    for (int x=0;x<buffer.length;x++){ 
     this.lab[x][y]=Integer.parseInt(buffer[x]); 
    } 
+0

yeah dein Recht ich vermasselt lol! das ist, was ich für die Codierung spät in der Nacht bekommen lol –

+0

Und Ihre Interpunktion und Grammatik leidet auch.Das sollte "du bist" nicht "dein" sein :-) –

+0

yup, wie ich sagte es ist wirklich spät hier Ich denke, ich werde am Morgen weiter programmieren, bevor ich mich mehr in Verlegenheit bringe –

Verwandte Themen