重复2-D阵列?

时间:2016-02-07 20:08:53

标签: java multidimensional-array repeat

所以,这是我们需要做的任务。

https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnx0c2NvbXB1dGVyc2NpZW5jZXxneDo1NWEyNjg0NGZhOGFhNDA5

我已经完成了除最后一个方法之外的所有方法,方法是fullSymmetricPattern。我知道我可以在其他方法中使用方法,特别是对于最后一种方法,但我真的不确定从哪一方开始。任何人都可以给我任何指示如何做到这一点或从哪里开始?提前致谢。

(c)编写方法fullSymmetricPattern。此方法采用String

的二维数组

作为表示模式的参数basePat,以及两个int参数,hReps和vReps。它返回

一个数组,其水平重复hRep次,vReps垂直,每次

block是基于basePat的双向对称模式。

public String[][] fullSymmetricPattern(String[][] basePat, int hReps, int vReps)

1 个答案:

答案 0 :(得分:0)

方法fullSymmetricPattern()最简单的方法是重复使用方法twoWaySymmetric()copyOnce()(来自(b)(c))。

  • 致电twoWaySymmetric()以制作完整的模式以重复
  • 创建目标矩阵为hReps * vReps双向对称矩阵的大小
  • 使用两个嵌套循环,重复调用copyOnce(),使用适当的偏移(startRowstartCol)将双向对称矩阵复制到目标矩阵中。

跟进发表评论:

  

在我继续之前,你能确认我的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;
}