0

Die Datei, die ich lese, hat 40 verschiedene Zeichenfolgen und ich möchte es in eine 2d-array mit einer Größe von [10][4] setzen.Wie lese ich eine Datei von Zeichenfolgen in einem 2d Array

Code bisher

public class GetAnswers { 

    public static void main(String[] args) { 

     try (BufferedReader br = new BufferedReader(new FileReader("Answers.txt"))) 
     { 
      String [][] answers; 
      answers = new String[10][4]; 
      String line; 
      int i = 0; 
      String [] temp; 
      while ((line = br.readLine()) != null) { 
       temp = line.split("\n"); 
       for (int j = 0; j < answers[i].length; j++) 
        { 
         answers[i][j] = temp[j]; 
         System.out.println(j); 
        } 
       i++; 
      } 
      //System.out.println(answers[1][2]); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

Textdateiformat:

apple 
orange 
dog 
cat 

Antwort

1

meisten effiecient Antwort denke ich. Hier finden Sie

import java.io.*; 
public class GetAnswers { 

    public static void main(String[] args) { 

     try (BufferedReader br = new BufferedReader(new 

FileReader("GetAnswers.txt"))) 
     { 
      String [][] answers; 
      answers = new String[10][4]; 
      String line; 
      int i = 0; 
      String [] temp = new String [40]; 
      while ((line = br.readLine()) != null) { 
       temp[i++] = line; 
      } 

      for(int j=0; j<temp.length; j++){ 
        answers[j/4][j%4] = temp[j]; 
        System.out.println(answers[j/4][j%4]); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 
} 
+0

vielen Dank Kumpel –

2

Unter der Annahme, dass die Mengen gesteuert werden, dann müssen Sie für temp einen separaten Index erstellen und haben auch eine innere for Schleife

int x = 0; 

for (int i = 0; i < 10; i++) { // outer 
    for (int y = 0; y < 4; y++) { // inner 
     answers [i][j] = temp[x++]; 
    } 
} 

Aber bevor ich das tat, war ich ld lese alle Zeilen und lege sie in eine einzige StringBuilder, die split und validiert sein kann, bevor Sie dies tun looping.

1

Sie haben zwei Möglichkeiten, eine ist, was Scary Wombat dort oben beschrieben hat.

Die zweite ist, dass Sie ein 1D-Array erstellen und es als 2D-Array behandeln können.

answers = new int[40]; 
for (int i = 0; i < 10; i++) { 
    for (int j = 0; j < 4; j++) { 
    answers [i*10 + j] = temp[x++]; 
    } 
}