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

Collection et Stream Java Discussion :

[Débutant] Questions sur un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [Débutant] Questions sur un tableau
    Bonjour tout le monde,

    Je crée un tableau (à une dimension) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int tableau [] = new int [10];
     
    for (i=0; i< tableau.length - 1; i++)
    		{
     
    			tableau[i] = i * 2 +2;
     
    			System.out.print(tableau[i] + "\t");
    Donc i vaut au départ 0.

    Si je fais 0 * 2 + 2 j'obtiens 2, c'est ça que je veux.

    Ensuite j'obtiens 4 et c'est là que je ne comprends pas.

    Si ma logique est bonne, il fait i (2) *2 + 2, je devrais alors obtenir 6 et pas 4 ?

    Idem pour les autres éléments du tableau.

    Une autre question :

    Quand le Professeur fait un System.out.print(tableau[i]) il a 2, 4,.... 18, 0

    Ce 0 est là car on rempli toutes les cases du tableau excepté la dernière.

    Comme il le précise, la valeur de cette dernière case du tableau est par défaut 0, chez lui, le Zéro apparaît, pas chez moi.

    Merci d'avance pour votre aide.

    beegees

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par beegees
    Donc i vaut au départ 0.

    Si je fais 0 * 2 + 2 j'obtiens 2, c'est ça que je veux.

    Ensuite j'obtiens 4 et c'est là que je ne comprends pas.

    Si ma logique est bonne, il fait i (2) *2 + 2, je devrais alors obtenir 6 et pas 4 ?
    Non puisqu'au second passage i vaut 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1 * 2 + 2 = (1*2) + 2 = 4

    Citation Envoyé par beegees
    Quand le Professeur fait un System.out.print(tableau[i]) il a 2, 4,.... 18, 0

    Ce 0 est là car on rempli toutes les cases du tableau excepté la dernière.

    Comme il le précise, la valeur de cette dernière case du tableau est par défaut 0, chez lui, le Zéro apparaît, pas chez moi.
    Dans ton code tu n'affiches jamais ce zéro... donc je n'ai aucune idée !
    C'est pas très clair tout cela !
    Pourquoi ne pas demander à ton professeur ?

    a++

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut adiGuba,

    Merci pour ta réponse.

    Pour le i, tu as tout à fait raison, merci

    Pour ce qui est du zéro, je ne comprends pas non plus.

    Je n'ai pas demandé à mon Prof car pendant le cours je ne comprenais rien, je ne préfairais donc pas déranger pour rien.

    Maintenant que je suis en blocus, je révise tout ça, je commence à comprendre, mais il y'a certaines choses que je ne comprends pas.

    Heureusement que vous êtes là !

    Bon, je continue l'exercice (qui est assez long) et je reviens vous dire quoi pour ce zéro.

    Merci encore et bonnes fêtes...

    beegees

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Salut,

    A part faire ceci, je voie pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int tableau [] = new int[10];
            for (int i=0; i< tableau.length -1; i++)
            {
                tableau[i] = i * 2 +2;
            }
            for (int i=0; i< tableau.length; i++)
            {
                System.out.print(Integer.toString(tableau[i]) + "\t");
            }

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut,

    Merci pour ta réponse.

    J'ai la solution de l'exercice, mais je vois pas ce qui cloche :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    // insertion d'un élément dans un tableau trié
     public class InsertionDansTableau
     {
     public static void main(String [] args)
     {
     // création d'un tableau de 10 éléments
     int[] tableau = new int[10];
     int position, i;
     // on remplit le tableau sauf le dernier élément
     // (qui contient 0 parce que initialisé par défaut)
     for(i = 0; i < tableau.length - 1; i++)
     tableau[i] = i * 2 + 2;
     // affichage du tableau avant insertion de l'élément
     System.out.println("Le tableau avant insertion");
     for(i = 0; i < tableau.length; i++)
     System.out.print(tableau[i] + "\t");
     // élément à insérer (nombre aléatoire entre 0 et 20, par exemple)
     System.out.println();
     int nombre = (int)(Math.random() * 20);
     System.out.println("Nombre pour insertion: " + nombre);
     // recherche de la position d'insertion
     i = 0;
     while ((nombre > tableau[i]) && (i < tableau.length - 1))
     i++;
     position = i;
     System.out.println("Position d'insertion: " + position);
     // décalage des éléments à partir de l'avant-dernier
     // en revenant en arrière jusqu'à position + 1
     // pour éviter d'écraser les valeurs
     // chaque élément à décaler est remplacé par celui qui le précède
     for(i = tableau.length - 1; i >= position + 1; i --)
     tableau[i] = tableau[i-1];
     // insertion de l'élément
     tableau[position] = nombre;
     // affichage du tableau après insertion de l'élément
     System.out.println("Le tableau apres insertion");
     for(i = 0; i < tableau.length; i++)
    System.out.print(tableau[i] + "\t");
    }
    }
    Vous voyez quelque chose ?

    Merci et bonne soirée.

    beegees

  6. #6
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    C'est pas un problème java mais un problème d'algo, je t'invite donc à poser ton problème dans le forum correspondant.
    Sinon j'ai la flemme d'étudier en détail, mais j'imagine que le "0" vient d'un int non initialisé ( qui vaut donc 0 ) inséré au départ.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    Je t'ai rajouté quelques System.out qui, je pense, t'aideront à mieux comprendre.

    En fait tu remplis les 9 premiers éléments de ton tableau (de tableau[0] à tableau[8]) mais tu ne remplis pas le dernier élément (tableau[9]).
    Simplement parce que dans ta première boucle for (celle qui remplit le tableau) tu as comme condition d'arrêt: i < tableau.length - 1 (ce qui revient à dire i < 9)
    Alors que dans ta seconde boucle for (celle qui affiche avant l'insertion d'un dixième élément) tu as : i < tableau.length (ce qui revient à dire i < 10)

    => pourquoi tu as un 0 à la dixième position au départ? Parce que tu initialises ton tableau avec new int[10] (sous entendu = 0 tant que tu n'assignes pas d'autre valeur).

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    //création d'un tableau de 10 éléments
    int[] tableau = new int[10];
    int position, i;
    // on remplit le tableau sauf le dernier élément
    // (qui contient 0 parce que initialisé par défaut)
    System.out.println("tableau.length = "+tableau.length);
    for(i = 0; i < tableau.length - 1; i++){
    	tableau[i] = i * 2 + 2;
    	System.out.print("tableau["+i+"] = " +tableau[i] + "\t");
    }
    System.out.println();
    // affichage du tableau avant insertion de l'élément
    System.out.println("Le tableau avant insertion");
    for(i = 0; i < tableau.length; i++){
    	System.out.print("tableau["+i+"] = "+tableau[i] + "\t");
    }
    // élément à insérer (nombre aléatoire entre 0 et 20, par exemple)
    System.out.println();
    int nombre = (int)(Math.random() * 20);
    System.out.println("Nombre pour insertion: " + nombre);
    // recherche de la position d'insertion
    i = 0;
    while ((nombre > tableau[i]) && (i < tableau.length - 1))
    i++;
    position = i;
    System.out.println("Position d'insertion: " + position);
    // décalage des éléments à partir de l'avant-dernier
    // en revenant en arrière jusqu'à position + 1
    // pour éviter d'écraser les valeurs
    // chaque élément à décaler est remplacé par celui qui le précède
    for(i = tableau.length - 1; i >= position + 1; i --)
    tableau[i] = tableau[i-1];
    // insertion de l'élément
    tableau[position] = nombre;
    // affichage du tableau après insertion de l'élément
    System.out.println("Le tableau apres insertion");
    for(i = 0; i < tableau.length; i++)
    System.out.print(tableau[i] + "\t")
    Résultat obtenu :
    SystemOut O tableau.length = 10
    SystemOut O tableau[0] = 2 tableau[1] = 4 tableau[2] = 6 tableau[3] = 8 tableau[4] = 10 tableau[5] = 12 tableau[6] = 14 tableau[7] = 16 tableau[8] = 18 (autrement dit ici tableau[9]=0)
    SystemOut O Le tableau avant insertion
    SystemOut O tableau[0] = 2 tableau[1] = 4 tableau[2] = 6 tableau[3] = 8 tableau[4] = 10 tableau[5] = 12 tableau[6] = 14 tableau[7] = 16 tableau[8] = 18 tableau[9] = 0
    SystemOut O Nombre pour insertion: 10
    SystemOut O Position d'insertion: 9
    SystemOut O Le tableau apres insertion
    SystemOut O 2 4 6 8 10 12 14 16 18 10
    Voilà j'espère que ça t'éclaire sinon précise ta question...

    Bonne merd* pour tes partiels.

    PS: personnelement j'ai eu énormément de mal à comprendre la programmation en suivant les cours qui m'étaient dispensés... par contre dès que je me suis procuré un bouquin ou l'autre tout a éé plus facile. Enfin, tu as peut etre des profs plus doués que moi... (je l'espère pour toi ). En java je te conseille un bourquin de O'Reilly : Head First Java, Second Edition (c'est en anglais mais c'est très ludique et facile à lire) ou 'Java pour les nuls' si vraiment l'anglais te rebute... Pour tes partiels c'est peut etre un peu tard mais pour la suite peut etre...

  8. #8
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour ptr83,

    Merci beaucoup pour ton message et surtout pour le temps que tu as dépensé pour le rédiger.

    Je vais imprimer ton message et le relire à mon aise, je peux que cela va beaucoup m'aider poru comprendre.

    Pour ce qui est du bouquin, merci pour les références, j'arai à la Fnac l'acheter la semaine prochaine (l'anglais n'est pas un problème pour moi).

    J'ai de la chance d'avoir un Prof qui explique bien les choses, il va seulement un peu trop vite et je dois alors revoir tout cela à mon aise à la maison.

    Je te remercie encore pour ton aide et je te souhaite de très bonnes fêtes.

    Beegees

Discussions similaires

  1. [Débutant] Question sur les lumières
    Par Mandalar dans le forum DirectX
    Réponses: 10
    Dernier message: 04/01/2006, 13h49
  2. [débutant] Questions sur le Transact-SQL
    Par nagty dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 05/07/2005, 17h43
  3. [parseur] [Débutant] Question sur les parseurs
    Par steph-n dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 02/05/2005, 19h17
  4. [Débutant] questions sur Visibroker
    Par Man Dak dans le forum CORBA
    Réponses: 1
    Dernier message: 29/06/2004, 23h02
  5. [débutant] question sur les #
    Par Ultros dans le forum C
    Réponses: 3
    Dernier message: 29/04/2004, 12h30

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