2013-11-21 5 views
-1

У нас есть 2-й массив, и я хочу преобразовать этот массив в массив 1D. Я получаю выход 3 раза из одного массива. Я хочу, чтобы выход 1d-массива был 1 раз. Мне нужен вывод в одном массиве & сортировка элементов.Преобразование 2D-массива в 1D-массив в 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 - это наивысшее значение, которое является 1-й позицией &, а 14 - малым от 15, которое является последней позицией в массиве. Таким образом, это упорядочивается в массиве. – user3011731

+1

сделайте это самостоятельно – Marc

+0

Проверьте код, он сортирует массив1D сейчас. – 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] + " "); 
}