【发布时间】:2019-07-09 03:03:56
【问题描述】:
我想使用一个矩形数组创建另一个二维数组,其中包含左倾对角线部分。
我已经阅读了this question 中的最佳答案,并且我试图让它对我有用,但它只显示了如何获得右倾部分。
换句话说,如果它从左下角开始,则创建的新二维数组应包含以下值:
{'u'},
{'p', 'v'},
{'k', 'q', 'w'},
{'f', 'l', 'r', 'x'},
{'a', 'g', 'm', 's', 'z',}
// etc..
如何制作一个充满左倾对角线部分的二维数组?
我的代码示例:
public class MCVE {
private static char[][] bigArray = {
{'a', 'b', 'c', 'd', 'e', 'q'},
{'f', 'g', 'h', 'i', 'j', 'w'},
{'k', 'l', 'm', 'n', 'o', 'e'},
{'p', 'q', 'r', 's', 't', 'r'},
{'u', 'v', 'w', 'x', 'z', 't'}};
public static void main(String[] args) {
addForwardsDiagonals();
}
private static void addForwardsDiagonals() {
final int WIDTH = bigArray[0].length;
final int HEIGHT = bigArray.length;
ArrayList<Character> charArr = new ArrayList<>(5);
char[][] diagonalArr = new char[bigArray.length + bigArray[0].length -1][];
// iterate through the array diagonally
for( int k = 0 ; k <= WIDTH + HEIGHT - 2; k++ ) {
for( int j = 0 ; j <= k ; j++ ) {
int i = k - j;
if( i < HEIGHT && j < WIDTH )
charArr.add(bigArray[i][j]);
}
// create a char[] array from charArr
charArr.trimToSize();
char[] tempArr = new char[charArr.size()];
for(int i = 0; i < tempArr.length; i++)
tempArr[i] = charArr.get(i);
// add the newly created char[] array to diagonalArr
diagonalArr[k] = (tempArr);
// clear charArr
charArr.clear();
}
// print the new 2D array
for(char[] arr: diagonalArr) {
for(char c: arr) {
System.out.print(c + " ");
}
System.out.println();
}
}
}
【问题讨论】:
-
bigArray数组中 Y 在哪里?为什么在 Z 之后是 T?
标签: java arrays loops multidimensional-array iteration