java - 使用java交换3*4矩阵中的列

标签 java arrays matrix swap indexoutofboundsexception

我用java编写了一个代码来交换3*4矩阵的列。

String[][] a = { { a,t,t,a},
                 { c,k,a,t},
                 { d,a,w,n }
               };

我想要的输出是: 一个,t,t,一个, t,a,k,c, n、w、a、d。

所以我的循环如下:

for(i=0;i<=2;i++) {
    for(j=0;j<=5;j++) {
        if(j<=2) {
            temp=a[i][j+1];
            a[i][j+1]=a[i][j];
            a[i][j]=temp;
        }
        if(j>3) {
            temp=a[i][j-3];
            a[i][j-3]=a[i][j-4];
            a[i][j-4]=temp;
        } else {
            temp=a[i][j-1];
            a[i][j-1]=a[i][j-2];
            a[i][j-2]=temp;
        }
    }
}

错误是:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at Execute.swapColums(DtTwo.java:69)
at DtTwo.main(DtTwo.java:11)

请帮忙..

最佳答案

示例:

public class Test
{  
   public static void main(String args[])
   {
       String[][] array2d = { 
                       { "a","t","t","a"},
                       { "c","k","a","t"},
                       { "d","a","w","n" }
                     };

       for (int i = 0; i < array2d.length; i++)
       {
           swapCols(array2d[i]);
       }

       print(array2d);
   }

   private static void swapCols(String s[])
   {
       for (int i = 0; i < s.length / 2; i++)
       {

            String temp = s[s.length - 1 - i];
            s[s.length - 1 - i] = s[i];
            s[i] = temp;
       }
   }

   private static void print(String[][] array2d)
   {
       System.out.println(Arrays.deepToString(array2d));
   }
}

输出:

[[a, t, t, a], [t, a, k, c], [n, w, a, d]]

关于java - 使用java交换3*4矩阵中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14292675/

相关文章:

c++ - 使用邻接矩阵在 C++ 上的有向图中查找所有循环的算法

java - 覆盖函数中的抽象

python - 在 Python 中使用 Sympy 的 Charpoly 系数

java - 在类和方法级别使用JAX-RS @Path注释的Java中的URI识别

c - 由于 C 中的这些指针和数组,程序崩溃

arrays - 二叉搜索树按以下顺序递归遍历 Right root Left?

c++ - C和C++不完全数组指针转换规则的区别

matlab - 如何在 MATLAB 中使用数组掩码缩小矩阵?

java - JPA:从外部源更新数据的好方法是什么?

java - TableModel - 在设置值时修改外部对象