2017-02-08 3 views
-1

Wie liest man Daten aus einer Textdatei ein, die nur char s in einem 2d-Array enthält und nur java.io.File, Scanner und eine Datei nicht gefunden-Ausnahme verwendet?Lesen einer Datei als 2d Char-Array

Hier ist die Methode, die ich versuche, die Datei in das 2D-Array einzulesen.

public AsciiArt(String filename, int nrRow, int nrCol){ 
    this.nrRow = nrRow; 
    this.nrCol = nrCol; 

    image = new char [nrRow][nrCol]; 

    try{ 
     input = new Scanner(filename); 

     while(input.hasNext()){ 

     } 
    } 
} 

Antwort

1

Stellen Sie sicher, dass Sie java.io.* importieren (oder bestimmte Klassen, die Sie benötigen, wenn Sie das möchten), um die Klasse FileNotFoundException einzuschließen. Es war ein wenig schwierig zu zeigen, wie man das 2D-Array füllt, da Sie nicht genau angegeben haben, wie Sie die Datei analysieren wollen. Diese Implementierung verwendet jedoch Scanner, Datei und FileNotFoundException.

public AsciiArt(String filename, int nrRow, int nrCol){ 
    this.nrRow = nrRow; 
    this.nrCol = nrCol; 
    image = new char[nrRow][nrCol]; 

    try{ 
     Scanner input = new Scanner(new File(filename)); 

     int row = 0; 
     int column = 0; 

     while(input.hasNext()){ 
      String c = input.next(); 
      image[row][column] = c.charAt(0); 

      column++; 

      // handle when to go to next row 
     } 

     input.close(); 
    } catch (FileNotFoundException e) { 
     System.out.println("File not found"); 
     // handle it 
    } 
} 
+0

danke dir, das hat geholfen, mein Gedächtnis zu joggen. Ich habe über verschiedene Code gegossen und manchmal habe ich vergessen. –

0

Eine grobe Art und Weise, es zu tun wäre:

File inputFile = new File("path.to.file"); 
    char[][] image = new char[200][20]; 
    InputStream in = new FileInputStream(inputFile); 
    int read = -1; 
    int x = 0, y = 0; 
    while ((read = in.read()) != -1 && x < image.length) { 
     image[x][y] = (char) read; 
     y++; 
     if (y == image[x].length) { 
      y = 0; 
      x++; 
     } 
    } 
    in.close(); 

aber ich bin sicher es gibt auch andere Möglichkeiten, die viel besser und effizienter wäre, aber man das Prinzip erhalten.