dire, j'ai un tableau 1D avec 30 éléments: Comment convertir le tableau 1D en tableau 2D?
Dites 10x3? P> array2d[0][0] = 1 array2d[0][1] =2 array2d[0][2] =3
.
.
.
array2d[9][0] = 28 array2d[9][1] =29 array2d[9][2] =30
9 Réponses :
int array2d[][] = new int[10][3];
for(int i=0; i<10;i++)
for(int j=0;j<3;j++)
array2d[i][j] = array1d[(j*10) + i];
THX! Comment si mon élément de tableau n'est pas un numéro continu, mais un nombre aléatoire? Comment puis-je modifier la boucle pour faire cela?
Son code est indépendant de tout ce que la matrice tient, de sorte qu'il fonctionnera pour tout élément de tableau
array2d [i] [j] = array1d [(J * 10) + i]; est faux. Il devrait être array2d [i] [j] = array1d [j% 3 + i * 3];
Cela ne fonctionne pas correctement pour moi. J'ai tenté de l'utiliser pour convertir une matrice INT de 1D de codes de couleur d'image en une matrice 2D, mais l'image résultante est pivotée par 90 degrés.
arr2d [i] [j] = (int) arr1d [(i * 3) + j]; fonctionne aussi
Vous ne pouvez pas "convertir" un tableau 1D en une matrice 2D, mais un tableau peut être multi-dimensionnaire lorsque vous le déclarez.
int myArray2d[][] = new int[10][3]
sans écrire de code pour vous ... p>
Donc, il ressemblera à quelque chose comme ... p>
Je suis intentionnellement vague, voyant qu'il s'agit de devoirs. Essayez de poster du code afin que nous puissions voir où vous êtes coincé. P>
public class Test{
public static void main(String[] argv)
{
int x,y;
for(int num =0; num<81;num++)
{
if((num % 9)>0)
{
x = num/9;
y = num%9;
}else
{
x = num/9;
y = 0;
}
System.out.println("num ["+num+"]---["+x+","+y+"]");
}
}
}
/* Replace 9 by the size of single row of your 2D array */
Veuillez vous abstenir d'ajouter uniquement des réponses de code sans explication
Voici une fonction générique à convertir de 1D -> Array 2D: Si vous voulez faire le contraire (2D -> 1D), la fonction: p> < Pré> xxx pré> p>
Cela ne fonctionne pas correctement pour moi. J'ai tenté de l'utiliser pour convertir une gamme de codes de couleur d'image en une matrice 2D, mais l'image résultante est tournée de 90 degrés et a également des lignes verticales à travers elle.
int[] oneDArray = new int[arr.length*arr.length];
//Flatten 2D array to 1D array...
int s = 0;
for(int i = 0; i < arr.length; i ++)
for(int j = 0; j < arr.length; j ++){
oneDArray[s] = arr[i][j];
s++;
}
BTW, l'OP était pour la direction opposée.
Vous trouverez souvent le même problème: comment manipuler une matrice 2D en tant que tableau 1D.
J'ai écrit une grille de classe générique qui permet d'accéder aux objets par index fort> ou par (x, y) fort>. Voir la classe suivante et comprendre l'idée derrière elle. :) p> Vous pouvez utiliser la classe suivante pour la manipulation de données en tant que tableau 2D ou matrice 1D. Voici le code pour cela que j'ai écrit et utilisez. P> public class TestGrid
{
public static final int SIZE = 10;
public static final Integer el1 = new Integer(2);
public static final Integer el2 = new Integer(3);
public static final Integer el3 = new Integer(3);
public static void main(String[] args)
{
Grid<Integer> grid = new Grid<>(SIZE);
assert grid.getCapacity() == SIZE*SIZE ;
assert grid.idx(0,0) == 0 ;
assert grid.idx(1,0) == 1 ;
assert grid.idx(0,1) == 10;
assert grid.idx(6,1) == 16;
assert grid.idx(9,9) == 99;
grid.put(1, el1);
assert grid.get(1) == el1 : grid.get(1);
grid.put(0, 1, el2);
assert grid.get(0,1) != el1 && el1 != el2 && grid.get(0,1) == el2;
grid.put(15, el3);
assert grid.get(5,1) == el3;
}
}
Ceci est juste un pseudo code. Les lignes représentent la longueur de la matrice 2D et les colonnes représentent la longueur de l'élément du 1er élément dans la matrice
package com.vikrant;
import java.util.Arrays;
public class TwoD {
public static void main(String args[])
{
int a[][]=new int[4][3];
int d[]={10,20,30,40,50,60,70,80,90,100,110,120};
int count=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
{
if(count==d.length) break;
a[i][j]=d[count];
count++;
}}
int j=0;
for (int i = 0; i<4;i++)
{
for(j=0;j<3;j++)
System.out.println(a[i][j]);
}
}}
THIS DOES THE WORK
Bienvenue à cela. Merci pour votre réponse. Bien que les réponses de code seulement puissent fournir un code de travail, certains auraient peut-être des problèmes pour comprendre ce que le code fait. S'il vous plaît essayez d'élaborer les fragments de votre code.