如何转换1-D阵列成2-D阵列 [英] How To Convert a 1-D Array into a 2-D Array

查看:91
本文介绍了如何转换1-D阵列成2-D阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经有code为如何将二维其中之一转换为一个立体的,但我不知道该怎么做,反之亦然。这里是我的code:

 包laboratorio9;进口java.util.Scanner中;
公共类主要{
  公共静态无效的主要(字串[] args){
    扫描仪ENTRADA =新的扫描仪(System.in);
    int类型的[] [];
    INT B〔]
    INT N;
    INT米;
    INT NB = 0;    的System.out.println(阵列中输入的行数。);
    N = entrada.nextInt();    的System.out.println(阵列中输入的列数。);
    M = entrada.nextInt();    A = INT新[M] [N];
    B = INT新[M * N];    的for(int i = 0; I<米;我++){
      对于(INT J = 0; J< N; J ++){
        的System.out.println(输入A [+ I +] [+ J +]);
        A [I] [J] = entrada.nextInt();
      }
    }
    的System.out.println();    的for(int i = 0; I<米;我++){
      对于(INT J = 0; J< N; J ++){
        B〔注] = A [I] [J]。
        NB ++;
      }
    }    的for(int i = 0; I< M * N;我++){
      的System.out.println(B〔Ⅰ〕+);
    }
    的System.out.println();    布尔交换= FALSE;    做{
      交换= FALSE;
      的for(int i = 0; I< b.length个-1;我++)
        如果(B [Ⅰ]≥B〔I + 1]){
          INT温度= B [I]
          B〔Ⅰ〕= B第[i + 1];
          B〔I + 1] =温度;
          交换= TRUE;
        }
    }而(交换);    的for(int i = 0; I< b.length个;我++)
      的System.out.println(B [I]);
  }
}


解决方案

您正在寻找的东西,如:

  INT J = 0;
INT K = 0;
的for(int i = 0; I< NB,我++)
{
    C [J] [K] = B [I]
    ķ++;
    如果(K> = N)
    {
        J ++;
        K = 0;
        如果(J> = M)
            抛出错误();
    }
}

这是相同的:

 时int k = 0;
的for(int i = 0; I<米;我++)
{
    对于(INT J = 0; J< N; J ++)
    {
        C [I] [J] = B [K +];
    }
}

但试图帮助解释这个概念了。

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

解决方案

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.

这篇关于如何转换1-D阵列成2-D阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆