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 ?

0voto

logbasex Points 574

Avec Java 8 mais il est possible de faire quelque chose de plus élégant comme ceci :

int[][] foo = new int[][] {
        new int[] { 1, 2, 3 },
        new int[] { 1, 2, 3, 4},
    };

int length = Arrays.stream(array).max(Comparator.comparingInt(ArrayUtils::getLength)).get().length

0voto

int rows=arr.length; //For knowing No of rows

int cols=arr[0].length; //For Knowing No of columns

Exécutez ce code... et comprenez...

public class Store2darrays {   

    public static void main(String args[]) {
      int[]arr={1,2,3,4};
      System.out.println(arr.length);
      int[][] arr2d={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
      System.out.println(arr2d.length);
      System.out.println(arr2d);
      System.out.println(arr2d[0]);
      System.out.println(arr2d[1]);
      System.out.println(arr2d.length);
      System.out.println(arr2d[0].length); }
}

-2voto

peter Points 1
public class Array_2D {
int arr[][];
public Array_2D() {
    Random r=new Random(10);
     arr = new int[5][10];
     for(int i=0;i<5;i++)
     {
         for(int j=0;j<10;j++)
         {
             arr[i][j]=(int)r.nextInt(10);
         }
     }
 }
  public void display()
  {
         for(int i=0;i<5;i++)

         {
             for(int j=0;j<10;j++)
             {
                 System.out.print(arr[i][j]+" "); 
             }
             System.out.println("");
         }
   }
     public static void main(String[] args) {
     Array_2D s=new Array_2D();
     s.display();
   }  
  }

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