所以,这是我们需要做的任务。
我已经完成了除最后一个方法之外的所有方法,方法是fullSymmetricPattern。我知道我可以在其他方法中使用方法,特别是对于最后一种方法,但我真的不确定从哪一方开始。任何人都可以给我任何指示如何做到这一点或从哪里开始?提前致谢。
(c)编写方法fullSymmetricPattern。此方法采用String
的二维数组作为表示模式的参数basePat,以及两个int参数,hReps和vReps。它返回
一个数组,其水平重复hRep次,vReps垂直,每次
block是基于basePat的双向对称模式。
public String[][] fullSymmetricPattern(String[][] basePat, int hReps, int vReps)
答案 0 :(得分:0)
方法fullSymmetricPattern()
最简单的方法是重复使用方法twoWaySymmetric()
和copyOnce()
(来自(b)
和(c)
)。
twoWaySymmetric()
以制作完整的模式以重复hReps
* vReps
双向对称矩阵的大小copyOnce()
,使用适当的偏移(startRow
和startCol
)将双向对称矩阵复制到目标矩阵中。跟进发表评论:
在我继续之前,你能确认我的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;
}