2016-04-23 29 views
0

所以我只是有一個快速的問題。該程序應該創建一個字符數組,並從文本文件中獲取內容,其中包含許多隨機符號,如&,?,!,字母和數字。我不允許創建單獨的數組,而是將它們放入2d數組中。我會怎麼做呢?我已經知道行數和列數,因爲它在實際擁有所有符號和內容之前告訴我該文件的頂部。繼承人我到目前爲止:如何將包含大量符號的txt文件轉換爲數組?

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(); 

     } 
    } 

所以A是行數,B是從中讀取的列數。當我運行該程序時,它表示它期待char [] charArray,並且它找到了一個字符串,並且該錯誤被稱爲不兼容的類型錯誤。 同樣ps:fileReader是我的掃描儀從文件讀取。謝謝!

回答

0

首先,您需要爲變量使用更多的描述性名稱。例如,爲什麼命名變量aa真的代表文件中的行數?相反,請使用numRows(同樣對於b,請使用numCols)。此外,你真的應該命名你的掃描儀scanner。有一個FileReader類和你的fileReader變量名稱是誤導性的 - 它讓每個人都認爲你使用FileReader而不是Scanner。最後,用於在Java中聲明數組類型的括號通常與類型名稱相鄰,如char[][]而不是char [][]。這不會改變代碼的執行方式,但它更符合通用約定。

現在,你的問題。你聲明行/列的數量是在文件的開頭聲明的。該解決方案假定該文件實際上包含numRows行和numCols列。基本上,next返回String。您可以使用String.toCharArrayString轉換爲char[]。然後,您只需將字符複製到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]; 
     } 

    }  
相關問題