所以我正在尝试进行元素切换。基本上在2D阵列中切换两个元素。我没有得到任何错误,但它只是没有正常工作,甚至没有打印所有的元素。我究竟做错了什么。这是代码。
public class ArrayTheory
{
public static void printArray(int[][]args)
{
for(int i=0;i<args.length; i++)
for(int j=0;j<args.length; j++) {
System.out.print(args[i][j]);
}
System.out.println();
}
public static void arraySwitch(int c1, int c2, int [][]args)
{
for(int i=0;i<args.length; i++)
for(int j=0;j<args.length; j++) {
int temp = args[i][c1];
args[i][c1] = args[i][c2];
args[i][c1] = temp;
}
}
}
以下是元素
public class TestArray {
public static void main(String[] args){
int[][] test = {{1,2,3,4},
{1,2,3,4},
{1,2,3,4}};
int[][] carData = {{16,2008,4},
{45,2011,4},
{26,2010,7},
{18,2009,8}};
ArrayTheory.arraySwitch(0,2,test);
ArrayTheory.printArray(test);
}
}
答案 0 :(得分:1)
由于数组不是正方形,因此如果每行的长度不同,则需要使用args[0].length
或args[i].length
为第二维编制索引。
答案 1 :(得分:1)
您在arraySwitch
int temp = args[i][c1];
args[i][c1] = args[i][c2];
args[i][c1] = temp; <<<<<<< bug
那应该是
args[i][c2] = temp;
答案 2 :(得分:0)
你的问题不是很清楚。如果您尝试交换两个特定元素,则需要四个坐标(a1,a2)和(b1,b2)来处理每个元素。你的代码似乎试图交换两行。您的打印方法看起来很好,除了您的外部循环没有大括号。所以你的println()只会在打印完二维数组的全部内容后执行一次。