在Java中将2D数组转换为1D数组

时间:2013-11-21 11:42:17

标签: java arrays

我们有2-d数组,我想在1D数组中转换这个数组。我得到单个阵列的3倍输出。我希望1d数组的输出是1次。 我需要单阵列和输出的输出对元素进行排序。

package com.vidhu;
import java.util.Arrays;


public class MatrixConvert 
{
public static void main(String[] args) {
    int i,j,flag=0;
    int count=10;
    int ar[][]=new int[2][3];
    int arCopy[]=new int[6];

    for(i=0;i<2;i++)
    {
         for(j=0;j<3;j++)
         {
              ar[i][j]=count;
              count++;
         }
    }
    for(i=0;i<2;i++)
    {
         for(j=0;j<3;j++)
         {
              System.out.print(ar[i][j]);
              System.out.print(" ");
         }
         System.out.println(" ");
     }

    for(i=0;i<2;i++)
    {
         for(j=0;j<3;j++)
         {
              arCopy[flag]=ar[i][j];
              flag++;
         }
     }
    System.out.println(" ");
    for(i=0;i<arCopy.length;i++)
    {
         System.out.print(Arrays.toString(arCopy));
         Arrays.sort(arCopy);

         System.out.print(" ");
 }

 }
}

输出:

10 11 12  
13 14 15  

[10, 11, 12, 13, 14, 15] [10, 11, 12, 13, 14, 15] [10, 11, 12, 13, 14, 15] [10, 11, 12, 13, 14, 15] [10, 11, 12, 13, 14, 15] [10, 11, 12, 13, 14, 15] 

5 个答案:

答案 0 :(得分:1)

你的最后陈述是这样做的:

 for(i=0;i<arCopy.length;i++) // for i= 0 i< array length (6))
{
     System.out.print(Arrays.toString(arCopy)); // print the full array
     Arrays.sort(arCopy);  // sort the array

     System.out.print(" ");
}

并且有一个循环,你可以改变它只做这个:

Arrays.sort(arCopy);
System.out.print(Arrays.toString(arCopy));

Arrays.sort(arCopy);
for(i=0;i<arCopy.length;i++) 
{
     System.out.print(arCopy[i] + " "); 
}

答案 1 :(得分:0)

System.out.print(Arrays.toString(arCopy))

显示整个数组。您正在六次显示和排序数组。

答案 2 :(得分:0)

您的最终打印声明处于循环中,循环次数为6次。删除最后的for子句,您只打印一次。

答案 3 :(得分:0)

Arrays.toString()方法将打印单维数组中的所有元素。你不需要这个for循环。

删除此代码。

for(i=0;i<arCopy.length;i++)
{
      System.out.print(Arrays.toString(arCopy));
      Arrays.sort(arCopy);

      System.out.print(" ");
 }

并且喜欢这个

 System.out.println(Arrays.toString(arCopy));
 Arrays.sort(arCopy);
 System.out.println("After sorting");
 System.out.println(Arrays.toString(arCopy));

答案 4 :(得分:-1)

在这里,我添加了你要求的分类, 这段代码按照特殊顺序对array1D []进行了解析你提到了:

package matrixConvertion;
import java.util.Arrays;

public class matrixConvertion {

        public static void main(String[] args)
            {

                int i,j=0;
                int count=10;
                int array2D[][]=new int[2][3];
                int array1D[]=new int[6];

                for(i=0;i<2;i++)
                {
                     for(j=0;j<3;j++)
                     {
                          array2D[i][j]=count;
                          count++;
                     }
                }

                for(i=0;i<2;i++)
                {
                     for(j=0;j<3;j++)
                     {
                          array1D[i+j+i*(array2D[0].length-1)] = array2D[i][j];                       
                     }
                }   
                System.out.println("1D array is:");
                System.out.println(Arrays.toString(array1D));


                Arrays.sort(array1D);
                System.out.println("sorted 1D array is:");
                System.out.println(Arrays.toString(array1D));
                int n=0, g=2;
                int[] reSorted=new int[array1D.length];
                for(int k=0; k<array1D.length; k++)
                {   
                      reSorted[k]=array1D[array1D.length-1-n];                    
                      n+=g;
                         if(n>=array1D.length)
                         {
                            n=array1D.length-1; g=-2; 
                         }
                }
                System.out.println("reSorted 1D array is:");
                System.out.println(Arrays.toString(reSorted));              


            }

}