【问题标题】:issue reversing rows of 2d array发出反转二维数组的行
【发布时间】:2018-03-03 01:15:23
【问题描述】:

好吧,我正在尝试用偶数索引反转行,但不是扭动这样的事情:

“6 5 4 3 2 1”

是这样写的:

“6 5 4 4 5 6:

如何解决这个问题?

附:代码如下

int[][] a = new int[6][6];
    int k = 1;
    for(int i = 0; i < 6 ; i++)
    {
        for(int j = 0; j < 6 ; j++)
        {
            a[i][j]=k;
            k++;
        }
    }

    for(int i = 0; i < 6 ; i++)
    {
        for(int j = 0; j < 6 ; j++)
        {
            if(i%2 == 0)
            {
                int temp = a[i][j];
                a[i][j] = a[i][a.length - 1 -j];
                a[i][a.length - 1 - j] = temp;
            }
                System.out.print(a[i][j] + "\t");           
        }
        System.out.println();
    }

【问题讨论】:

  • 如果你真的想学习编程 - 使用调试器运行你的代码。
  • 使用方法和好的变量名,将问题拆分为更简单的部分:for (int rowIndex = 0; rowIndex &lt; array.length; rowIndex += 2) { int[] row : array[rowIndex]; reverseRowElements(row); }。现在reverseRowElements方法只需要一个循环,就不会混淆行和列索引,代码理解起来也会简单很多。

标签: java arrays reverse


【解决方案1】:

您的循环应该一直运行到每一行的中间...并交换元素

// define the array
int[][] a = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
// print it
System.out.println(Arrays.deepToString(a));

// loop all the rows
for (int i = 0; i < a.length; i++) {
    // loop every element on the row until the middle
    for (int j = 0; j < a[i].length / 2; j++) {
        // swap those
        int temp = a[i][j];
        a[i][j] = a[i][a[i].length - j - 1];
        a[i][a[i].length - j - 1] = temp;
    }
}
// print it again
System.out.println(Arrays.deepToString(a));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多