2017-02-22 236 views
1

我想將字符串轉換爲2D字符數組。如何將字符串轉換爲2D字符數組JAVA

因此,例如,如果輸入字符串是:+dd+babd+b_a+ddc

輸出應該是一個二維字符數組,看起來像下面這樣:

+dd+ 

babd 

+b_a 

+ddc 

下面的代碼是我到目前爲止已經試過。在這裏,我試圖獲取索引爲i的字符,並將其存儲在位置[0] [0]處的二維char數組中,然後將其存儲在位置[0] [0]處的下一個字符,依此類推。

[請注意,我在循環體中添加了@param註釋,以幫助您瞭解每個參數的存儲內容。我明白@param應該在方法頭部而不是在主體中]。

public Board(String startConfig, String endConfig) { 

     int row = 4; 
     int column = 4; 
     // @param startConfig currently stores the string +dd+babd+b_a+ddc. 
     // @param endConfig is currently unused. 
     char[][] boardArray = new char[row][column]; // Creates a 4x4 board. 
     for (int i = 0; i < row; i++) { 
      for (int j = 0; j < column; j++) { 
       boardArray[i][j] = startConfig.charAt(i); 
       System.out.println(boardArray[i][j]); 
      } 
     } 
    } 

我真的被卡住了,想不出別的什麼。我已經嘗試使用.toCharArray,但此方法將字符串轉換爲一維char數組,這對我來說沒有什麼用處。

我想事先感謝您的時間和幫助。

回答

2

您需要爲String另一個櫃檯偏移

int offset = 0; 
for (int i=0; i < row; i++) { 
    for (int j=0; j < column; j++) { 
     boardArray[i][j] = startConfig.charAt(offset++); 
     System.out.println(boardArray[i][j]); 
    } 
} 

或按Tim的出色答卷,偏移量可以計算爲j + i*column

對於輸出匹配嘗試

int offset = 0; 
for (int i=0; i < row; i++) { 
    for (int j=0; j < column; j++) { 
     boardArray[i][j] = startConfig.charAt(offset++); 
     System.out.print(boardArray[i][j]); 
    } 
    System.out.println(); 
    // uncomment below line if you want a blank line 
    // System.out.println(); 
} 
+0

請看我編輯,應該修復你的輸出 –

+0

這個應該匹配。 –

1

你很近,但你需要使用當前行和列來分配每個位置。在這種情況下,下面的表達式決定了當前字符的索引:

j + i*column <--- offset by this many rows 
^^^ 
current column 

for (int i=0; i < row; i++) { 
    for (int j=0; j < column; j++) { 
     boardArray[i][j] = startConfig.charAt(j + i*column); 
     System.out.println(boardArray[i][j]); 
    } 
} 
+0

你能詳細說明一下嗎?你如何使用二維數組來生成輸出? –

+0

@Ree沒有創造力,但無論如何我已經提出了你的問題。 –

相關問題