2017-11-19 3 views
0

2次元配列の文字を反復処理する必要があります。私はすでに反復するコードを持っていますが、それが来ると失われます。2次元配列を斜めに反復する

ここは私の2次元アレイです。

a,v,i,o,n,l 
t,o,t,o,l,l 
m,a,r,c,o,e 
s,a,g,r,c,i 
o,e,n,z,o,g 
s,t,r,a,r,u 

/私はすでに

a 
tv 
moi 
.... 

を持っていると私は

l 
nl 
ole 
.... 

彼は反復するコートである必要があります。

int size = 6; 

for (int k = 0 ; k < size ; k++) { 
    for (int j = 0 ; j <= k ; j++) { 
     int i = k - j; 
     System.out.print(lista[i][j] + " "); 
    } 
    System.out.println(); 
} 

for (int k = size - 2 ; k >= 0 ; k--) { 
    for (int j = 0 ; j <= k ; j++) { 
     int i = k - j; 
     System.out.print(lista[size - j - 1][size - i - 1] + " "); 
    } 
    System.out.println(); 
} 
+2

ペンとペーパーから始めます。それぞれの反復におけるアイテムのインデックスは?パターンはありますか?それは何ですか? –

+0

私は自分の心を作り上げるためにExcelを使っていました。私はパターンを知っていると思うが、コード化に失敗した。私の場合は、n * nの行列があります。パターンはyで始まり、xは0で始まり、繰り返しごとに5回、繰り返しごとに1回0を増やす必要があります。あなたがそれぞれ0と5に達するまで。 – zzklggir

+0

あなたのパターンは、サイズ「n」の正方行列ではなく、サイズ「6」の正方行列です。 –

答えて

0

はこれを試してみてください:

public class Matrix { 
    public static void main(String[] args) { 
     char[][] arr = { 
       { 'a', 'v', 'i', 'o', 'n', 'l' }, 
       { 't', 'o', 't', 'o', 'l', 'l' }, 
       { 'm', 'a', 'r', 'c', 'o', 'e' }, 
       { 's', 'a', 'g', 'r', 'c', 'i' }, 
       { 'o', 'e', 'n', 'z', 'o', 'g' }, 
       { 's', 't', 'r', 'a', 'r', 'u' } }; 
     for (int n = -arr.length; n <= arr.length; n++) { 
      for(int i = 0; i < arr.length; i++){ 
       if((i-n>=0)&&(i-n<arr.length)){ 
        System.out.print(arr[i][i-n]); 
       } 
      } 
      System.out.println(); 
     } 
    } 
} 
0

独自のコードを使用できます。あなたがする必要があるのは、まず行列を転置することだけです。私はあなたのためにそれを書いてテストしました。 myArrayは入力として与えた配列で、yourArrayはあなたのコードでlistaとして使う必要がある配列です。

for (int i = 5; i >= 0; i--) { 
    for (int j = 0; j <= 5; j++) { 
     yourArray[5 - i][j] = myArray[j][i]; 
    } 
}