![](/img/trans.png)
[英]Sorting a 2-D Array by Copying it to a 1-D Array, the output is correct but the iterations are repeating
[英]Repeating 2-D array?
因此,这是我们需要做的任务。
除了最后一个方法fullSymmetricPattern,我已经完成了所有方法。 我知道我可以在其他方法中使用方法,尤其是对于最后一种方法,但是老实说,我不确定该从哪里开始。 谁能给我有关如何进行操作或从何处开始的任何指示? 提前致谢。
(c)编写方法fullSymmetricPattern。 此方法采用String的二维数组
作为表示模式的参数basePat和两个int参数,即hReps和vReps。 它返回
一个数组,该数组的块水平重复hReps次,垂直重复vReps次,每个重复
block是基于basePat的双向对称模式。
public String[][] fullSymmetricPattern(String[][] basePat, int hReps, int vReps)
方法fullSymmetricPattern()
是最简单的实现再利用方法twoWaySymmetric()
和copyOnce()
从(b)
和(c)
twoWaySymmetric()
使完整的模式重复 hReps
* vReps
双向对称矩阵的大小 startRow
和startCol
)重复调用copyOnce()
将双向对称矩阵复制到目标矩阵中。 后续评论:
在继续之前,您可以确认我的copyOnce方法有效吗? 我认为它坏了。
您再次删除了代码,但是看起来还可以,除了:
false
条件是错误的。 <= length - 1
,不如直接将其写为< length
。 b[0].length
将被多次使用(对于内部循环外部循环的每次迭代),因此最好一次获得一次,并且通过给变量起好名字,也将使代码更具可读性。 这是更新的版本:
public static boolean copyOnce(String[][] a, String[][] b, int startRow, int startCol) {
final int rowCount = b.length;
final int colCount = b[0].length;
if (startRow < 0 || startRow + rowCount > a.length)
return false; // Invalid start row
if (startCol < 0 || startCol + colCount > a[0].length)
return false; // Invalid start column
for (int row = 0; row < rowCount; row++)
for (int col = 0; col < colCount; col++)
a[startRow + row][startCol + col] = b[row][col];
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.