繁体   English   中英

重复二维数组?

[英]Repeating 2-D array?

因此,这是我们需要做的任务。

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

除了最后一个方法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双向对称矩阵的大小
  • 使用两个嵌套循环,使用适当的偏移量( startRowstartCol )重复调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM