2017-02-22 13 views
1

文字列を2Dのchar配列に変換しようとしています。例えばので文字列を2Dのchar配列に変換する方法JAVA

、入力文字列がある場合:+dd+babd+b_a+ddc

出力は次のような2D char型の配列でなければなりません:

+dd+ 

babd 

+b_a 

+ddc 

次のコードは、私がこれまで試してみましたものです。ここでは、インデックスiの文字を取得し、それを位置[0] [0]の2D char配列に格納し、次に位置[0] [1]の次の文字などに格納しようとしています。

[それぞれのパラメータが何を格納しているかを理解するのに役立つように、ループ本体に@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を使ってみましたが、このメソッドは文字列を1Dの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]); 
    } 
} 

やティムの優秀な答えは1としてオフセット、オフセットは

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

を私が編集を参照、この1つは一致している必要があり、あなたの出力 –

+0

を修正する必要があります。 –

1

をしようと一致するように、出力のためにj + i*column

ように計算することができます。あなたは近くにいましたが、現在の行と列の両方を使って各位置を割り当てる必要があります。この場合は、次の式は、現在の文字のインデックスを決定します。

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

これについて詳しく説明できますか?出力を生成するために2D配列をどのように使用していますか? –

+0

@Ree独創性はありませんが、私はどんな場合でもあなたの質問をupvotedしています。 –

関連する問題