【发布时间】:2014-02-20 22:19:33
【问题描述】:
昨天我问了一个非常相似的问题,但我有点搞砸了。
我需要将一个数组传递给一个方法,并且在该方法内部我需要交换行,所以如果它是
1 2 3
3 2 1
2 1 3
应该是
3 2 1
1 2 3
3 1 2
使用我现在拥有的代码,它将最后一列正确地交换到第一列位置,然后放置应该是最后一列。
3 1 2
1 3 2
3 2 1
另外,它需要保持空白,因为我需要修改原始数组,所以我不能将它设置为临时数组,但我可以使用临时整数来存储。
这是我现在可以使用的代码
public static void reverseRows(int[][] inTwoDArray)
{
for (int row = 0; row < inTwoDArray.length; row++)
{
for (int col = 0; col < inTwoDArray[row].length; col++)
{
int tempHolder = inTwoDArray[row][col];
inTwoDArray[row][col] = inTwoDArray[row][inTwoDArray[0].length - 1];
inTwoDArray[row][inTwoDArray[0].length - 1] = tempHolder;
}
}
}
任何帮助都会很棒,我的头发快要拔掉了!谢谢!
【问题讨论】:
-
首先提取将一维数组反转为方法的算法。这已经使代码更容易理解,并解决了其中一个错误。然后在纸上执行你的逆向算法,注意每条指令中每个变量的值。你会明白哪里错了。
-
@JBNizet 感谢您的回复!我目前正在尝试这样做。所以你的意思是我会做
int tempHolder = inTwoDArray[row]? -
算法应该是:对二维数组中的每一行,反转该行。在 Java 中:
for (int[] row : inTwoDArray) { reverse(row); }。这不是更容易阅读和理解吗?现在你只需要专注于 reverse() 方法的实现,它处理一维 int[] 数组。 -
@JBNizet 谢谢,谢谢,非常感谢!您让我理解了它为什么起作用,并且 kuba 用代码说明了它。成功了,非常感谢你们和其他所有人!
标签: java arrays multidimensional-array