如何转换1-D阵列成2-D阵列 [英] How To Convert a 1-D Array into a 2-D Array
本文介绍了如何转换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屋!
查看全文