171 votes

Obtenir la longueur d'un tableau 2D en Java

J'ai besoin d'obtenir la longueur d'un tableau 2D pour la ligne et la colonne. J'ai réussi à le faire en utilisant le code suivant :

public class MyClass {

 public static void main(String args[])
    {
  int[][] test; 
  test = new int[5][10];

  int row = test.length;
  int col = test[0].length;

  System.out.println(row);
  System.out.println(col);
    }
}

Les chiffres 5 et 10 s'affichent comme prévu.

Regardez maintenant cette ligne :

  int col = test[0].length;

Remarquez que je dois faire référence à une ligne particulière pour obtenir la longueur de la colonne. Cela me semble incroyablement laid. De plus, si le tableau était défini comme suit :

test = new int[0][10];

Le code échouerait alors lorsqu'il essaierait d'obtenir la longueur. Existe-t-il une autre façon (plus intelligente) de procéder ?

3voto

kaliatech Points 8331

Il n'existe pas de méthode plus propre au niveau du langage, car les tableaux multidimensionnels ne sont pas tous rectangulaires. Il est parfois nécessaire d'avoir des tableaux en dents de scie (avec des longueurs de colonnes différentes).

Vous pouvez facilement créer votre propre classe pour abstraire la fonctionnalité dont vous avez besoin.

Si vous n'êtes pas limité aux tableaux, peut-être que certaines des classes de collection fonctionneraient aussi bien, comme un Multimap .

2voto

asdfgghjkll Points 11

.longueur = nombre de lignes / longueur des colonnes

[0].length = nombre de colonnes / longueur de la ligne

1voto

Ankush kumar Points 31

Exemple de tableau 1 :

int arr[][] = { { 1, 3, 1, 5 },
                 { 2, 2, 4, 1 },
                 { 5, 0, 2, 3 },
                 { 0, 6, 1, 2 } };

Exemple de tableau 2 :

int arr[][] = { { 1, 3, 1 },
                 { 2, 2, 4 },
                 { 5, 0, 2 },
                 { 0, 6, 1 } };

La fonction ci-dessous fonctionne pour toutes les matrices symétriques et asymétriques.

 row_Count = arr.length
 column_Count = arr[0].length

0voto

Essayez le programme suivant pour un tableau 2D en Java :

public class ArrayTwo2 {
    public static void main(String[] args) throws  IOException,NumberFormatException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int[][] a;
        int sum=0;
        a=new int[3][2];
        System.out.println("Enter array with 5 elements");
        for(int i=0;i<a.length;i++)
        {
            for(int j=0;j<a[0].length;j++)
            {
            a[i][j]=Integer.parseInt(br.readLine());
            }
        }
        for(int i=0;i<a.length;i++)
        {
            for(int j=0;j<a[0].length;j++)
            {
            System.out.print(a[i][j]+"  ");
            sum=sum+a[i][j];
            }
        System.out.println();   
        //System.out.println("Array Sum: "+sum);
        sum=0;
        }
    }
}

0voto

RobynVG Points 1
import java.util.Arrays;

public class Main {

    public static void main(String[] args) 
    {

        double[][] test = { {100}, {200}, {300}, {400}, {500}, {600}, {700}, {800}, {900}, {1000}};

        int [][] removeRow = { {0}, {1}, {3}, {4}, };

        double[][] newTest = new double[test.length - removeRow.length][test[0].length];

        for (int i = 0, j = 0, k = 0; i < test.length; i++) {
            if (j < removeRow.length) {
                if (i == removeRow[j][0]) {
                    j++;
                    continue;
                }
            }
            newTest[k][0] = test[i][0];
            k++;
        }

        System.out.println(Arrays.deepToString(newTest));   
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X