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

avec Java Discussion :

inverser un tableau


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 188
    Par défaut inverser un tableau
    je souhaiterais inverser un tableau et mettre le resultat dans nu autre tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class tt {
     
        public static void main(String[] args) {
     
        	int [] tab ={1,2,3,4,5,6,7,8,9};
        	int [] result=new int [9];
        	int k=9;
        	for (int i=1;i<=10;i++)
        	{
        	result[i]=tab[k];
        	k--;	
        	}
     
        	System.out.println(result);
        }
    }
    j'ai l'erreur suivante a l'exécution

    --------------------Configuration: tt - JDK version 1.8.0_144 <Default> - <Default>--------------------
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
    at tt.main(tt.java:19)

    Process completed.
    merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    1. Les tableaux tab et result ont 9 éléments. Dont les indices vont de 0 à 8 (0, 1, 2, 3, 4, 5, 6, 7, 8) (de 0 à la "taille du tableau ou le nombre d'éléments" moins un).
      1. Tu parcours le tableau tab avec k=9 pour commencer. 9>8. Donc pas bon et d'où l'erreur :
        java.lang.ArrayIndexOutOfBoundsException: 9
      2. Tu parcours le tableau result de 1 à 10, donc le premier élément n'est pas affecté, et les éléments 9 et 10 n'existant pas, tu auras aussi une erreur lors de l'affectation.
    2. Pour parcourir un tableau, il vaut mieux le parcourir par rapport à sa taille :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      for(int i=0; i<result.length; i++)
      Tu peux être sûr que comme ça, quelque soit le tableau, il n'y a pas d'indice hors intervalle.
    3. Ensuite, pour l'indice à affecter, tu peux le préciser à l'origine en le décrémentant, mais en prenant la taille comme référence.
      Tu es sûr que comme ça, quelque soit le tableau, l'indice est bon.

      Ou alors tu peux le calculer dynamiquement. L'élément d'indice 0 prend la valeur de celui de l'indice k=tab.length-1-0, celui d'indice 1, prend la valeur de celui de l'indice k=tab.length-1-1, l'indice 2 celui de l'indice k=tab.length-1-2. On voit de toute évidence la fonction qui permet de calculer k en fonction de i.
    4. En plus, pour être plus général, dimensionner result par rapport à tab te garantit d'avoir un tableau résultat de bonne taille quelque soit le tableau de départ (et ça même si tu le modifies, ou si tu fais une méthode et qu'il devient un paramètre).
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int[] result = new int[tab.length];
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 188
    Par défaut
    j'ai opéré tes modifs mais jai le resultat suivant

    [I@1db9742

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(result);
    n'affiche pas une représentation "lisible" du tableau mais juste une représentation technique qui a été implémentée comme ça (tout comme ça le ferait pour un objet d'une classe à toi pour laquelle tu n'as pas défini de méthode toString() spécifique).

    Pour afficher un tableau (à une dimension) de manière "lisible", sous-entendu voir ses éléments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(/*java.util.*/Arrays.toString(result));
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 188
    Par défaut
    donc j'ai mis ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class tt {
     
        public static void main(String[] args) {
     
        	int [] tab ={1,2,3,4,5,6,7,8,9,10};
        	System.out.println(tab[9]);
        	int[] result = new int[tab.length];
        	int k=tab.length-1;
        	for(int i=0; i<result.length; i++)
        	{
     
        	result[i]=tab[k];
        	k=k-1;	
        	}
     
        	System.out.println(Arrays.toString(result));
        }
    }
    mais un message d'erreur sur la ligne 16

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Et que dit-il, ce message d'erreur, pendant qu'on y est ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Inverser un tableau (ou table)
    Par jlfprofoto dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 15/02/2014, 15h06
  2. Réponses: 3
    Dernier message: 08/08/2007, 09h47
  3. [Débutant] Inverser un tableau
    Par Zhitoune dans le forum Delphi
    Réponses: 9
    Dernier message: 22/06/2007, 10h56
  4. Algorythmie: inverser un tableau c++
    Par corseb-delete dans le forum C++
    Réponses: 12
    Dernier message: 12/12/2006, 02h28
  5. Inversion de tableau
    Par Florian.L dans le forum Ada
    Réponses: 1
    Dernier message: 21/11/2006, 10h03

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