Project II: Transform Matrix

你将要创建一个类Transformation.java,并在这个类里设计两个静态方法,对一个二维数组进行相应变换:

  • transform()

  • convert()

两个方法的的签名和功能如下所示:

  1. public static int[][] transform(int[][] matrix)

transform方法会对二维数组的元素进行修改,修改规则如下所示:

  • 假设i和j分别表示matrix元素的行下标和列下标

  • 如果i和j相等,matrix[i][j]变为元素值的平方

  • 否则,如果i+j是奇数,matrix[i][j]变为(i+j)和元素值乘积的相反数

  • 否则,如果i+j是偶数,matrix[i][j]变为(i-j)和元素值乘积的绝对值

  • 最后返回更新后的矩阵newMatrixmatrix矩阵需要保持不变。

Example:

经过变换后,newMatrx如下所示:

2. public static int[][] convert(int[][] matrix)

将二维数组的行列互换的操作称为转置。例如,一个二维数组matrix如下所示:

将数组转置后,新的二维数组数组如下所示:

可以发现,原数组的第一行变成了新数组的第一列,第二行变成了第二列...第n行变成了新数组的第n列。

最后将转置后的数组沿着中心垂直翻转,得到最终矩阵newMatrix并返回。

原数组matrix依然保持不变。

如果转置后的矩阵列数为奇数,中间一列保持不变(如示例所示)。

如果转置后的矩阵列数为偶数,每一列都要进行翻转。

任务

  1. 在Transformation中实现transform()方法。

  2. 在Transformation中实现convert()方法。

  3. 在main()中测试两个函数。每个函数至少要准备两组数据测试。

Last updated