2017-11-09 14 views
1

文字列を多次元配列の特定の位置に配置したいと考えています。文字列は右から左に書く必要があります。多次元配列に文字列を設定する

public class PutStringInArray { 

    public static void main(String[] args) { 
      char[][] array1 = new char[10][10]; 
      String test = "Hello"; 
     char[2] = test; 
    } 
} 

私は、コードがそのように機能しないことを認識しています。この例では、文字列(この場合は "hello")を "array1 [2] [0]"で始まり、 "array1 [2] [4]"で終了します。 次のようにそれが満たされる必要があります。

array1 [2] [0] = h, 
array1 [2] [1] = e, 
array1 [2] [2] = l, 
array1 [2] [3] = l, 
array1 [2] [4] = o 

それはおそらく、非常にシンプルなソリューションですが、私はアイデアを得ることができません。

+0

'charAt(counter)'と要素を1つずつ挿入するダブルループを使用します。 ( 'counter'は配列に1つの文字を挿入するたびに '0'から増えます) –

+1

文字列の文字をループし、配列の各文字を自分で設定する必要があります。代わりに配列の次元を同じに保つことに本当に気をつかない場合は、StringメソッドtoCharArray()を使用して戻り値をchar [2]に割り当てます –

答えて

3

文字列をchar配列に変換しようとする必要があります。あなたは、文字列 "こんにちは" ARRAY1を開始したい場合は

char[][] array1 = new char[10][10]; 
String test = "Hello"; 
array1[2] = test.toCharArray(); 

EDIT

[2] [2]、あなたは、System.arraycopy

System.arraycopy(test.toCharArray(), 0, array1[2], 2, test.toCharArray().length) 

だけを使用するには注意する必要があります配列の長さ。

+0

文字列が "array1 [2]"で始まらない可能性もありますか? [0] "、しかし" array1 [2] [2] "? – Syntax6

+0

@ Syntax6はい、私はそれを編集しました。 –

+0

うーん...。できます。しかし、私は単純な方法を探しています....私はこの配列の位置にそれを直接的に持っていきたいです。 – Syntax6

0

Stringを反復して、インデックス2に返された配列に配置できます。次のスニペットのように:

char[][] array1 = new char[10][10]; 
String test = "Hello"; 

char[] array2 = array1[2]; // char[2] changed to array1[2] 
for(int i = 0; i < test.length(); i++){ 
    if(i >= array2.length){ 
     break; 
    } 
    array2[i] = test.charAt(i); 
} 

ifステートメントは、配列サイズよりも長い文字列が途切れるように使用されます。

1

より良い方法は、必要な列の数を定義しないことです。

char[][] arr = new char[10][]; 
arr[2] = "hello".toCharArray(); 
arr[7] = "world".toCharArray(); 
System.out.println(Arrays.toString(arr[2])); 
System.out.println(Arrays.toString(arr[7]));