Comment imprimer les coordonnées de mon tableau 2D? Je dois imprimer les coordonnées de partout où se trouve le numéro 5. Les nombres sont générés aléatoirement dans le tableau en utilisant Math.random . Voici le code:
public class MultiArrays {
public static void main(String[] args) {
int[][] array = new int[3][4];
for (int index = 0; index < array.length; index++) {
for (int j = 0; j < array[index].length; j++) {
array[index][j] = (int) (Math.random() * 10);
}
}
for (int column = 0; column < array[0].length; column++) {
for (int row = 0; row < array.length; row++) {
System.out.print(array[row][column] + " | ");
}
System.out.println();
}
}
}
3 Réponses :
Cela ressemble à Java, pas à JavaScript (notez simplement cela en fonction des balises de la question). Ce sont des choses très différentes, donc simplement être clair.
Je ne sais pas non plus ce que vous entendez par "quand le nombre est 5." Voulez-vous dire quand la deuxième valeur du tableau multidimensionnel est 5?
Il y a une sorte de confusion dans votre deuxième boucle for externe si c'est le cas. Vous voudriez itérer toutes les valeurs de array (donc array.length ), puis toutes les valeurs internes de ces valeurs.
Pour afficher la valeur du tableau lorsque les valeurs internes (de droite) du tableau sont 5, vous auriez besoin d'une condition où votre appel System.out est effectué.
Je pense que ce que vous recherchez est:
for (int row = 0; row < array.length; row++) {
for (int col = 0; col < array[row].length; col++) {
if (array[row][col] == 5) {
System.out.println("Row: " + row + " Col: " + col + " has value 5");
}
}
}
Il traite la première ligne / colonne comme 0 (à partir de 0)
Ouah merci! Maintenant que je le regarde, ce n'est pas difficile. J'apprends juste les tableaux 2D
Si ma réponse répond à votre question, veuillez la marquer comme acceptée afin que la question soit résolue.
bien ça marche mais la ligne et les colonnes sont inversées lors de l'impression
Je viens de changer de ligne et de col dans System.out et cela fonctionne très bien.
Vous pouvez utiliser IntStream à cet effet:
[0, 2] [3, 0]
[3, 0, 5] [8, 6, 1] [4, 7, 1] [5, 0, 3]
// output Arrays.stream(arr1).map(Arrays::toString).forEach(System.out::println); Arrays.stream(arr2).map(Arrays::toString).forEach(System.out::println);
Sortie:
int x = 5;
// finding (x) coordinates
int[][] arr2 = IntStream.range(0, arr1.length)
.mapToObj(i -> IntStream.range(0, arr1[i].length)
.filter(j -> arr1[i][j] == x)
// (x) coordinates
.mapToObj(j -> new int[]{i, j})
.toArray(int[][]::new))
.flatMap(Arrays::stream)
.toArray(int[][]::new);