Monday, April 25, 2011

How To Convert a UniDimensional Array to a Bidimensional Array (Java)

I already have the code for how to convert a bidimensional one into a dimensional one, but I don't know how to do it vice-versa. Here's my code:

package laboratorio9;

import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    int A[][];
    int B[];
    int n;
    int m;
    int nb = 0;

    System.out.println("Enter the number of lines in your array.");
    n = entrada.nextInt();

    System.out.println("Enter the number of columns in your array.");
    m = entrada.nextInt();

    A = new int[m][n];
    B = new int[m*n];

    for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
        System.out.println("Enter A["+i+"]["+j+"]");
        A[i][j] = entrada.nextInt();
      }
    }
    System.out.println();

    for (int i = 0; i < m;i++) {
      for (int j = 0; j < n; j++) {
        B[nb] = A[i][j];
        nb++;
      }
    }

    for (int i = 0; i < m*n; i++) {
      System.out.println(B[i] + "  ");
    }
    System.out.println();

    Boolean Swap = false;

    do {
      Swap = false;
      for (int i=0;i<B.length-1;i++)
        if (B[i] > B[i + 1]) {
          int Temp = B[i];
          B[i] = B[i + 1];
          B[i + 1] = Temp;
          Swap = true;            
        }
    } while (Swap);

    for (int i=0;i<B.length;i++)
      System.out.println(B[i]);
  }
}
From stackoverflow
  • you're looking for something like:

    int j = 0;
    int k = 0;
    for ( int i = 0; i < nb;i++)
    {
        C[j][k] = B[i];
        k++;
        if( k >= n )
        {
            j++;
            k = 0;
            if( j >= m )
                throw Error();
        } 
    }
    

    which is the same as:

    int k = 0;
    for ( int i = 0; i < m;i++)
    {
        for ( int j = 0; j < n;j++)
        {
            C[i][j] = B[k++];
        }
    }
    

    but with trying to help explain the concept more.

0 comments:

Post a Comment