IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Comment passer en paramètre seulement une ligne de int[][]?


Sujet :

Langage Java

  1. #1
    Vol
    Vol est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 38
    Points
    38
    Par défaut Comment passer en paramètre seulement une ligne de int[][]?
    J'ai une fonction X qui reçoit un tableau int[] en paramètre.

    Le tableau à traiter dans ma procédure est en 2 dimensions (int[][]).

    Est-il possible de passer en paramètre seulement une ligne/colonne du tableau 2D lors de l'appel de X?

    Quelque chose comme:

    y = X(int[1][:]); <- ce qui voudrait dire passer la première ligne pour toutes les colonnes.

    Merci!

  2. #2
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int [][] val;
    //valuer val;
    public void X(int[]){
    ...
    }
     
    //appel :
    X(val[1]);
    Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
    Rien ne sert de partir à point, il vaut mieux courir .

  3. #3
    Vol
    Vol est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    Merci! Ça va me sauver pas mal de code inutile

    Si je comprends bien, en utilisant seulement un [], c'est la première dimension (ligne) qui est utilisée?
    Tout comme si je fais:

    int[][] tab = new int[4][5];

    tab.length -> 4 C'est encoe la première dimension qui est utilisée par défaut.

    Est-ce possible de faire la même chose (appel de fonction ou .length) mais avec la deuxième dimension (colonne) de fixée?

  4. #4
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    tab[n].length te donne la taille de la nième ligne
    Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
    Rien ne sert de partir à point, il vaut mieux courir .

  5. #5
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    MDR : réponse dans la minute

    oublie pas le Résolu
    Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
    Rien ne sert de partir à point, il vaut mieux courir .

  6. #6
    Vol
    Vol est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    Super, merci!

    Edit:
    Je viens de me rendre compte que je ne peux pas appeler la fonction avec la deuxième dimension (colonne)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int tab[][]  // où le tableau est [ligne][colonne]
     
    public X(int[] tableau){
    ...
    }
     
    // Appel de X en passant toutes les lignes d'une colonne
    X(tab[][1]) // <- évidemment ceci ne fonctionne pas...
    Est-ce possible?

  7. #7
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Citation Envoyé par Vol
    Super, merci!

    Edit:
    Je viens de me rendre compte que je ne peux pas appeler la fonction avec la deuxième dimension (colonne)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int tab[][]  // où le tableau est [ligne][colonne]
     
    public X(int[] tableau){
    ...
    }
     
    // Appel de X en passant toutes les lignes d'une colonne
    X(tab[][1]) // <- évidemment ceci ne fonctionne pas...
    Est-ce possible?
    Non, ce n'est pas possible. Tu ne peux pas passer toutes le lignes d'une colonne.

    Par contre, il est possible de passer une ligne.

    Alors comment faire?

    Créer un nouvequ tableau qui contient toutes les lignes d'une colonne.
    Bien le bonjour chez vous
    Jowo

  8. #8
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    tab[1] te donne une valeur de type int[].
    tab[1][1] te donne une valeur de type int.

    Tu vas malheureusement devoir faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public int[] getColumn(int[][] tab, int column) { // substitue column par le nom que tu preferes
      int[] result = new int[tab.length];
      for (int i = 0; i < result.length; i++) {
        result[i] = tab[i][column];
      }
      return result;
    }
    Il faudrait rajouter des tests de validite sur le parametre column mais en gros c'est ca. Bref, tu peux ensuite faire :

    X(getColumn(tab, 1))

    ce qui correspond a ton hypothetique X(tab[][1]).
    Romain Guy
    Android - Mon livre - Mon blog

  9. #9
    Vol
    Vol est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    Merci de clarifier cet aspect.

    edit:
    Et merci pour l'exemple!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment passer un paramètre via une url en JSP
    Par redabadache3 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/05/2010, 00h29
  2. Réponses: 8
    Dernier message: 09/12/2008, 10h04
  3. Réponses: 5
    Dernier message: 03/07/2007, 10h31
  4. Réponses: 2
    Dernier message: 11/10/2006, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo