2017-05-29 107 views
-3

卸下特定炭我要讀像這樣的一個文件:從一個char [] []數組

WWSW\n 
W__W\n 
WW_W\n 
WWEW\n 

我存儲文件的一個char [] []陣列的內容,在這個例子在這裏:Maze = new char [numrows] [numCols]我想刪除/忽略「\ n」但我無法找到一個方法,因爲數組似乎不允許任何這樣的。

這裏是代碼:

public static void readTextFile(String filename) throws MazeFileWrongChar, MazeFileNumCols { 
    startrow=startcol=finishcol=finishrow=-1; 
    mazeBuffer=new ArrayList<String>(); 
    int numCols=0; 
    try { 
     Scanner file=new Scanner(new File(filename)); 
     while(file.hasNext()) { 
      String nextLine=file.nextLine(); 
      mazeBuffer.add(nextLine); 
      if(nextLine.length()>numCols) { 
       numCols=nextLine.length(); 
      } 

     } 
    }catch(Exception e) { 
     System.out.println(filename + "there is a problem"); 
    } 
    int numrows=mazeBuffer.size(); 
    System.out.println("number of rows: "+ numrows + "\nnumber of columns: " + numCols); 
    Maze=new char[numrows][numCols]; 
    int r_s,c_s,r_e,c_e; 
    for(int i=0;i<numrows;i++) { 
     String row = mazeBuffer.get(i); 
     for (int j = 0; j < numCols; j++) { 

       if (row.length() >= j) { 
        Maze[i][j] = row.charAt(j); 
       } 
       if (Maze[i][j] == ('S') || Maze[i][j] == ('s')) { 
       } 
       if (Maze[i][j] == ('E') || Maze[i][j] == ('e')) { 
       } 

      } 
      } 

任何幫助將apreciated。

+0

陣列是固定的。爲什麼你想把字符串轉換爲字符數組呢? – GhostCat

+0

正如我已經回答[你第一個問題(https://stackoverflow.com/questions/44240944/custom-exception-is-not-working-how-its-supposed-to-java/44241564?noredirect=1# comment75493120_44241564)。只需閱讀那裏的解決方案。但是這裏寫的問題更好! – AxelH

+0

您awnser不工作,如果那樣我會標記爲正確 – MDordio

回答

1

並回答您的其他question

你已經寫在文件中的字符'\''n'所以你只需要刪除這些:

String nextLine=file.nextLine().replace("\\n", ""); //escaped the \ 
+0

確定現在它工作的感謝,問題解決了,我錯過了莫名其妙這兩個「\\」只用了一個 – MDordio

+0

@MDordio我在那裏說過,'replace'來自'String',所以你需要在'String'而不是'char []'上執行); – AxelH

0

file.nextLine()與斷行結束。所以,你可能trim這個值:

String nextLine = file.nextLine().trim(); 
0

您可以探微做到這一點String nextLine=file.nextLine().replace("\n", "");

+0

以及我的例外,捕獲非W,S,_,E的無效字符仍然被提出,因爲\ n不被替換,你確定該方法在這種情況下工作? – MDordio

+0

是的,也許你最後有'\ r'。 – AbA2L

+0

嘗試用這個'字符串nextLine = file.nextLine()代替( 「\ n」, 「」).replace( 「\ r」, 「」);' – AbA2L

0

如果您有下議院郎API在你的項目,你可以使用

StringUitls.chomp

從字符串末尾移除一個換行符(如果它存在),否則將其保留。

StringUtils.chomp("abc \r")  = "abc " 
StringUtils.chomp("abc\n")  = "abc" 
StringUtils.chomp("abc\r\n")  = "abc" 
相關問題