2016-04-23 7 views
0

so habe ich nur eine kurze Frage. Das Programm soll ein Zeichenarray erstellen und den Inhalt aus einer Textdatei holen, die viele zufällige Symbole wie &,?,!, Buchstaben und Zahlen enthält. Ich bin nicht erlaubt, getrennte Arrays zu erstellen und sie stattdessen in das 2d-Array zu legen. Wie würde ich das machen? Ich kenne bereits die Anzahl der Zeilen und Spalten, weil sie mir am Anfang der Datei sagt, bevor sie alle Symbole und Sachen hat. Heres, was ich habe, so weit:Wie würde ich eine TXT-Datei mit vielen Symbolen in ein Array konvertieren?

char [][]charArray=new char[a][b]; 
    for(int z=0;z<charArray.length;z++) 
    { 
     for(int y=0;y<charArray[y].length;y++) 
     { 
      charArray[y]=fileReader.next(); 

     } 
    } 

So A ist die Anzahl der Zeilen und B ist die Anzahl der Spalten aus zu lesen. Wenn ich das Programm ausführe, heißt es, dass es ein char [] charArray erwartet, und es fand eine Zeichenfolge, und der Fehler wird als inkompatibler Typfehler bezeichnet. ALso ps: fileReader ist mein Scanner, um aus einer Datei zu lesen. Vielen Dank!

Antwort

0

Zuerst müssen Sie aussagekräftigere Namen für Ihre Variablen verwenden. ZB warum benennen Sie die Variable a, wenn a wirklich die Anzahl der Zeilen in der Datei darstellt? Verwenden Sie stattdessen numRows (und ebenfalls für b, verwenden Sie numCols). Außerdem sollten Sie Ihren Scanner wirklich scanner nennen. Es gibt eine FileReader Klasse und Ihr fileReader Variablenname ist irreführend --- es lässt jeden denken, dass Sie eine FileReader anstelle einer Scanner verwenden. Schließlich werden die Klammern, die zum Deklarieren eines Array-Typs in Java verwendet werden, normalerweise neben dem Typnamen platziert, wie in char[][] anstelle von char [][]. Dies ändert nicht die Art und Weise, wie der Code ausgeführt wird, aber er entspricht besser der üblichen Konvention.

Nun zu Ihrem Problem. Sie haben angegeben, dass die Anzahl der Zeilen/Spalten am Anfang der Datei deklariert ist. Diese Lösung geht davon aus, dass die Datei tatsächlich numRows Zeilen und numCols Spalten enthält. Im Grunde gibt next eine String zurück. Sie können String.toCharArray verwenden, um die String in eine char[] zu konvertieren. Dann kopieren Sie einfach die Zeichen an die entsprechende Position in Ihrem charArray.

Scanner scanner = new Scanner(theFile); 

    char[][] charArray=new char[numRows][numCols]; 

    for (int i = 0; i < numRows; i++) { 

     final char[] aLine = scanner.next().toCharArray(); 
     for(int j = 0; j < aLine.length;j++){ 
      charArray[i][j] = aLine[j]; 
     } 

    }  
Verwandte Themen