【问题标题】:Two Dimensional Array Perimeter and Initializing Data二维数组周长和初始化数据
【发布时间】:2026-01-19 05:35:02
【问题描述】:

我是Java初学者,所以请放轻松。我正在研究一个处理二维数组的练习方法问题。问题是一种方法,它告诉您将名为 array 的二维字符数组作为参数。然后它希望您将数组的所有元素初始化为“x”,但初始化为“o”的周长(第一列和最后一列,第一行和最后一行)除外。

我的问题是如何初始化每个元素以表示二维数组中的 x 和 y,以及如何初始化周长的每个行和列元素? 例如,创建 3 行乘 4 列的二维数组 -

char[][] table = new char[3][4]

- 将只用 o 填充桌子的外围,而在里面的其余部分将用 x 填充正确吗?

这基本上是输出的样子吗?

  { o, o, o, o},
  { o, x, x, o},
  { o, o, o, o},

另外,如果我无法理解问题,是否有人可以引导我朝着正确的方向前进?

谢谢

【问题讨论】:

    标签: java multidimensional-array initialization character


    【解决方案1】:

    这最好作为两个单独的问题来处理:

    1. 将第一行和最后一行初始化为'o'
    2. 初始化剩余的行

    第一个问题很容易解决:遍历第一行和最后一行并将每个元素设置为'o'。第二个问题分解为

    2a。将第一列和最后一列初始化为'o'

    2b。将剩余的列初始化为'x'

    假设一行的长度为length,这可以解决

    array[0] = 'o';
    array[length - 1] - 'o';
    for(int i = 1; i < length - 1; i++)
        array[i] = 'x'
    

    【讨论】:

      【解决方案2】:

      new int 数组将被初始化为全零。

      所以 int[][] 数组 = new int[3][4];

      看起来像

      {0,0,0,0}
      {0,0,0,0}
      {0,0,0,0}
      

      您必须自己完成设置周长的工作

      您需要的是嵌套一些循环并确定您在数组中的位置并进行相应设置: (伪代码)

      for i loop through array.length
          for j loop through array[i].length
              if i == first element or i == last element or j == first element or j == last element
                   then array[i][j] = perimeter value
              else
                   array[i][j] = center value
      

      一个长度为 n 的数组有 n 个元素,由 0 到 n-1 引用,所以如果你有一个这样的数组

      {1,2,3,4}
      

      array[0] 会是 1,这是因为 Java 数组是从零开始的。

      鉴于此,第一个始终为 0,最后一个为 length-1

      【讨论】:

      • 好吧,我对如何解决这个问题有了更好的理解。一个问题。如何找到 if 语句的第一个和最后一个元素?像 row == array[0].length 这样的东西是陈述我正在寻找的第一个元素的正确方法吗?假设我首先使用该 array[0].length 在里面创建了新数组