2013-11-21 216 views
-1

我們有二維數組,我想將這個數組轉換成一維數組。我得到了單個數組的3次輸出。我想1d數組的輸出是1次。 我需要在單個數組&排序元素的輸出。將二維數組轉換爲Java中的一維數組

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] 
+1

那麼,什麼是問題? – stackular

回答

-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));    


      } 

} 
+0

thnx ..我想再多一件事......我想以這種形式安排這個數組[15 13 11 10 12 14]。 15是最後一個位置,即陣列中排列的陣列的最後一個位置。 – user3011731

+1

然後自己動手 – Marc

+0

檢查代碼,它現在對array1D進行排序。 – troy

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

顯示整個陣列。您正在顯示和排序陣列六次。

0

您的最終打印語句將循環6次。刪除最後的子句,並且只打印一次。

0

Arrays.toString()方法將打印單維數組中的所有元素。你不需要這個循環。

刪除這段代碼。

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)); 
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] + " "); 
}