首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java交换3*4矩阵中的列

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

Stack Overflow用户
提问于 2013-01-12 19:00:45
回答 5查看 5.7K关注 0票数 0

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

代码语言:javascript
复制
String[][] a = { { a,t,t,a},
                 { c,k,a,t},
                 { d,a,w,n }
               };

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

所以我的循环如下:

代码语言:javascript
复制
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;
        }
    }
}

错误是:

代码语言:javascript
复制
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at Execute.swapColums(DtTwo.java:69)
at DtTwo.main(DtTwo.java:11)

请帮帮我..

EN

回答 5

Stack Overflow用户

发布于 2013-01-12 19:11:08

示例:

代码语言:javascript
复制
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));
   }
}

输出:

代码语言:javascript
复制
[[a, t, t, a], [t, a, k, c], [n, w, a, d]]
票数 1
EN

Stack Overflow用户

发布于 2013-01-12 19:21:01

代码语言:javascript
复制
public static void swap(int[][] arr, int line, int pos1, int pos2) {
    int temp = arr[line][pos1];
    arr[line][pos1] = arr[line][pos2];
    arr[line][pos2] = temp;
}

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

    for (i=0; i<3; i++) {
        swap(arr, i, 0, 3);
        swap(arr, i, 1, 2);
    }
}
票数 0
EN

Stack Overflow用户

发布于 2013-01-12 19:24:04

这可能是一个愚蠢的想法,但它可以比现在更简单,以使其更有效地使用

所以这个想法是,把一行转换成列表,让它变成->,反转字符串,使用->方法再次生成数组。

代码语言:javascript
复制
String[][] a = {{"a", "t", "t", "a"},
            {"c", "k", "a", "t"},
            {"d", "a", "w", "n"}
        };

        System.out.println(
            new StringBuffer(Arrays.asList(a[1]).
            toString().
            replace("[", "").
            replace("]", "").
            replace(" ", "")).
            reverse().
            toString().
            split(","));

结果= a1 -> t,a,k,c

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14292675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档