【问题标题】:how to reverse a row in a 4x4 array如何反转4x4数组中的一行
【发布时间】:2016-03-30 16:27:06
【问题描述】:

我对此很陌生,无法理解这一点。我基本上得到了一个 4x4 数组,例如:

5 2 1 7
3 2 4 4
7 8 9 2
1 2 4 3

我正在尝试反转特定行,我正在努力在网上找到任何关于为特定行执行此操作的信息,所以我想知道是否有人可以告诉我如何处理这个问题。

如果用户要求反转第 0 行,则期望的输出将返回

7 1 2 5
3 2 4 4
7 8 9 2
1 2 4 3

我已经尝试过了,但我的代码不起作用。这是我的代码:

for(int i = 0; i < row; i++){
for(int col = 0; col < cols / 2; col++) {
    int temp = arr[i][col];
    arr[i][col] = arr[i][arr[i].length - col - 1];
    arr[i][arr[i].length - col - 1] = temp;
}

提前致谢!

【问题讨论】:

  • 数组显示为一长串数字,应显示为 4x4
  • 如果它是一个数组数组,那么反转一个“行”只是反转一个特定的数组。有很多关于如何reverse an array 的信息。
  • 您的代码在我看来没问题。您想告诉给定代码有哪些错误/问题?
  • 你的代码没问题,但你不需要遍历i。将i 一次设置为用户输入的值,并删除外循环。

标签: java arrays multidimensional-array reverse


【解决方案1】:

好的,首先,当您在数据结构上运行时,请尽量不要对其进行处理。 在这里,您通过切换 first 和 last 来更改数组,但是如果长度是奇数会发生什么?有一个案件你没有处理。 其次,您在错误的索引上运行,两者都是 arr[i].length == arr.length 如果这不是一个正方形,它也会有错误......

如果您遇到索引问题,我会保存一个一维数组并切换它。

尝试使用此代码:

for(int i = 0; i < arr.length / 2; i++)
{
    int temp = arr[i];
    arr[i] = arr[arr.length - i - 1];
    arr[arr.length - i - 1] = temp;
}

【讨论】:

    【解决方案2】:

    使用特定的行号和数组,我相信这会起作用。试试看,然后告诉我。

     function rowSwitch(row_num, arr) {
    
     for(int col = 0; col < arr[row_num].length/ 2; col++) {
         int temp = arr[row_num][col];
         arr[row_num][col] = arr[row_num][arr[row_num].length - col - 1];
         arr[row_num][arr[row_num].length - col - 1] = temp; }
    
     }
    

    【讨论】:

    • 设置final int[] a = arr[row_num] 并使用a。不需要这么冗长。
    • 谢谢你,克里斯,你的方法奏效了!感谢所有尝试提供帮助的人
    猜你喜欢
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2013-12-17
    相关资源
    最近更新 更多