Forum Programmation.java Problème pour déinir un tableau d'entier et surtout pour écrire une méthode d'affichage

Posté par  .
Étiquettes : aucune
0
26
jan.
2005
Bonjour à tous

he oui, j'ai bien essayé de déclarer, initialiser et allouer un tableau de 10 entiers mais manque de chance je n'arrive pas à l'affichzer alors je suis perdu
je vous met le code si vous avez des indices..
merci


public class Tableau
{
public static void main(String[]args)
{
int[]tab; //declaration/
tab=new int[10]; // allocation/
tab[0] = 1; //initialisation/
tab[1] = 2;
tab[2] = 3;
tab[3] = 4;
tab[4] = 5;
tab[5] = 6;
tab[6] = 7;
tab[7] = 8;
tab[8] = 9;
tab[9] = 10;

for(int count=0; count<=10; count++)
{
System.out.println(count);
}

}
;}


et en plus , il faut que j'initialise chaque élément du tableau au carré de son indice!!!
j'ai retourné le code dans tous les sens et je pense avoir besoin de conseils
  • # indice

    Posté par  . Évalué à 3.

    si tu mettais ton tableau dans ton println ca marcherais surement mieux ;)

    Je me demande si t'as beaucoup cherche...
    • [^] # re: j'ai trouvé

      Posté par  . Évalué à 1.

      évidemment j'affichais lle décompte de ma boucle count et d'ailleurs je vous l'avez marqué...
      enfin...
      je crois qu'avec une ligne for(int i=0; i< tab.length; i++) ça marche beaucoup mieux!!!

      merci pour ton aide , très précieuse ( non je ne plaisante pas)

      a bientot pour des questions encore plus difficiles ( je sens qu'on va se marrer en lisant les réponses)
  • # bon, tres vite fait

    Posté par  . Évalué à 1.

    et sans donner la réponse
    // déclaration + instanciation, un truc du genre quoi ;)
    int[] tab = new int[10];
    
    // initialisation
    for (int i = 0; i < tab.size(); i++) {
        tab[i] = i*i;
    }
    
    // affichage
    for (int i = 0; i < tab.size(); i++) {
        System.out.println("valeur à l'indice" + i + " : " + tab[i]);
    }
    
    j'ai donné les réponses la en fait ? bon, fait comme si t'avais rien vu :D
    • [^] # tu m'as pas du tout donné la réponse!!!

      Posté par  . Évalué à 1.

      que vont penser les autres en lisant ton message: eh bien tout simplement que tu m'as donné la réponse ( je vais pas te condamner pour ça mais bon des fois c'est plus sympa de trouver la réponse tout seul avec juste une aide plus ou moins complète lol)

      je vois qu'on avait eu la même idée en ce qui concerne "tab.size" puisque moi j'ai opté pour " tab.length"

      merci de m'avoir répondu si rapidement, si sympathiquement, si humainement ( bon j'arrête là parce que sinon ça va ressembler à la bibliothèque rose)

      a+
  • # Les bases !

    Posté par  . Évalué à 3.

    Bon, il était 2 heures du mat' quand tu as posté ton message ... je vais donc considérer que tu étais fatigué pour louper de si grosses erreurs. Pour commencer il semblerait que ce soit tes premiers pas en Java (et en programmation vu les erreurs de ton code), je vais donc essayer d'être didactique en reprennant ligne par ligne ton code :
    < int[]tab; //declaration/
    < tab=new int[10]; // allocation/
    
    Bon ça c'est bon, c'est même bien de séparer la declaration de l'allocation quand on commence à programmer. Tu aurais pu aussi utiliser la version contractée déclation+allocation :
    int[] tab = new int[10]; //declaration et allocation 
    
    ou
    int tab[] = new int[10]; //declaration et allocation
    
    Ensuite pour l'initiatialisation de ton tableau tu as mis ça :
    < tab[0] = 1; //initialisation/
    < tab[1] = 2;
    < tab[2] = 3;
    < tab[3] = 4;
    < tab[4] = 5;
    < tab[5] = 6;
    < tab[6] = 7;
    < tab[7] = 8;
    < tab[8] = 9;
    < tab[9] = 10;
    
    Bon, ce n'est pas mauvais non plus, mais c'est un peu fastidieux comme méthode, on préfére d'habitude faire une boucle pour remplir le tableau :
    for (int i = 0; i < tab.length; i++) {
        tab[i] = i+1;
    }
    
    Tu remarqueras qu'on commence par mettre i à 0 et qu'on l'incrémente jusqu'à qu'il soit strictement inférieur à la taille du tableau (ici 10), donc i ira de 0 à 9. J'affecte donc à la position i du tableau la valeur i+1.
    < for(int count=0; count<=10; count++) {
    <    System.out.println(count);
    < }
    
    Première erreur : dans ton System.out.println tu affiches la valeur de ton indice 'count' !! Tu dois plutôt vouloir afficher la valeur du tableau à la position 'count' :
    System.out.println(tab[count]);
    
    Si tu relances ton programme comme ça tu auras un joli "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10", c'est normal ton indice 'count' va de 0 à 10 puisque tu demandes d'arrêter l'incrémentation quand 'count' est inférieur ou égal à 10. Alors que logiquement tu dois t'arrêter à 9. Pour un tableau de taille n tu incrémente toujours de 0 à n-1 (dans presque tous les langages de programmation). En reprenant l'exemple pour l'initialisation tu peux écrire :
    for (int count=0; count<tab.length; count++) {
      System.out.println(tab[count]);
    }
    
    Voila, tu as un programme qui marche ... mais je te conseillerais de te prendre un bon bouquin de programmation Java si tu commences dans ce langage et si tu n'as jamais fait de programmation prend un bouquin d'algorithmie. Tu peux aussi trouver plein de tutoriaux sur Internet alors n'hésite pas à te servir.
    • [^] # merci!

      Posté par  . Évalué à 1.

      tout à fait d'accord avec tes remarques et merci de m'avoir répondu en si détaillé et expliqué, c'est sympa.:=))

      Je me demande juste un truc: si ce tableau d'entiers comporte des entiers mélangés genre 5 / 4/ 9/ 8/ 3 /2 etc.. est-ce que ta ligne d'initialisation "for (int i = 0; i < tab.length; i++)
      tab[i] = i+1;"
      fonctionne?

      dans le sens où i + 1 me pose problème? puisque ce ne sont pas des entiers qui se suivent? dis moi ce que t'en pense

      pour ce qui concerne les tutoriaux j'ai trouvé mais niveau livre j'aimerais bien une référence pour débutant

      merci encore à toi
      • [^] # Re: merci!

        Posté par  . Évalué à 2.

        > Je me demande juste un truc: si ce tableau d'entiers comporte des entiers
        > mélangés genre 5 / 4/ 9/ 8/ 3 /2 etc.. est-ce que ta ligne d'initialisation ...fonctionne?

        En fait, ça dépend, pour initialiser un tableau tu as 4 choix :
        - Le remplir grâce à une valeur fixe, en Java c'est inutile pour remplir un tableau de 0 car à la déclaration d'un tableau d'entier il initialise déjà toutes les cases à 0. Exemple :

        //initialisation des valeurs à 2
        for (int i = 0; i < tab.length; i++) {
        tab[i] = 2;
        }

        - Le remplir grâce à une fonction mathématique utilisant l'index. En gros à la place du 'i+1' tu peux utiliser des fonctions plus complexes, voici quelques exemples :

        //initialisation des valeurs des cases au carrée de l'index (tab[0]=0, tab[1]=1, tab[2]=4 ... tab[9]=81)
        for (int i = 0; i < tab.length; i++) {
        tab[i] = i*i;
        }


        //initialisation des valeurs à l'inverse de l'index (exemple pour un tableau de 10 éléments : tab[0]=10, tab[1]=9, tab[2]=8 ... tab[9]=1)
        for (int i = 0; i < tab.length; i++) {
        tab[i] = tab.length-i;
        }

        - Le remplir avec des valeurs totalement aléatoires

        //initialisation aléatoire avec des valeurs allant de 0 à 9 inclu
        java.util.Random oPif = new java.util.Random();
        for (int i = 0; i < tab.length; i++) {
        tab[i] = oPif.nextInt(10);
        }


        //initialisation aléatoire avec des valeurs allant de 0 à 100 par pallier de 5
        java.util.Random oPif = new java.util.Random();
        for (int i = 0; i < tab.length; i++) {
        tab[i] = oPif.nextInt(20)*5+5;
        }

        //initialisation aléatoire avec des valeurs allant de 1 à la taille du tableau (pour un tableau de 10 élément : de 1 à 10 inclu)
        java.util.Random oPif = new java.util.Random();
        for (int i = 0; i < tab.length; i++) {
        tab[i] = oPif.nextInt(10)+1;
        }

        - Le remplir à la main quand il n'existe pas de fonction mathématique simple pour le faire automatiquement. Quand tu seras plus familliarisé avec Java tu pourras remplir ton tableau à partir d'un fichier de données par exemple.

        Bref, c'est la même chose que dans les autres langages, c'est pour ça que je te disais d'essayer de lire de la doc sur l'algorithmie.

        Bonne continuation
      • [^] # Re: merci!

        Posté par  . Évalué à 1.

        pour remplir un tableau avec un certain jeu de valeur, tu peux aussi utiliser la syntaxe :

        int[] tab=new int[]{4, 9, 10, 45, 11, 24};

        qui est bien pratique parfois.. :)
  • # Rien a voir avec Java !

    Posté par  . Évalué à 1.

    Tu déclares un tableau comportant 10 valeurs : ok.
    Ton tableau commence à 0 et fini à 9 : ok

    Tu crées une boucle avec un compteur "count" qui va de 0 à 10 !!!! pas ok du tout.

    Donc faut commencer par rectifier ca : for(int count=0; count<=9; count++)

    Ensuite, tu affiches .... la valeur du compteur, et pas le contenu du tableau !

    Donc il faut écrire plutôt : System.out.println(tab[count]);

    Voila.
    • [^] # c'est pas bête ce que tu dis là

      Posté par  . Évalué à 1.

      pourtant c'est du java sauce débutant, je te promets c'est du java et pour indication, toi aussi tu as été débutant en java , on a chacun fait des erreurs et quand on les regarde on en rit ... du moins c'est ce qu'il faut faire

      en ce qui concerne le compteur, j'avais oublié ce détail insignifiant comme quoi il commençait à 0 et donc 10-1=9

      merci de ta réponse en tout cas, qui fut rapide ( j'en suis étonné, d'habitude personne ne porte d'attention aux débutants)

      merci encore et si tu veux rire plus souvent je te conseille de regarder mes prochaines questions :=))

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.