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 :

Problème de tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Problème de tableau
    Bonjour je ne vois pas pourquoi mon tableau ne marche pas.
    Ce que j'essaie de faire, est de laisser un utilisateur rentrer 6 chiffres entre 1 et 30 et ensuite afficher ce tabelau
    Merci beaucoup de répondre.




    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
    public static int[]  lireCombinaisonJoueur6() { // le but est d'entrer une combinaison de 6 chiffres par lutisateur et ne pas laisser l'utilisateur depasser le chiffre 30
                int tab[]=new int[6]; 
            Scanner clavier = new Scanner(System.in);
            int chiffre;
            for (int i = 0; i <tab.length; i++) {
                 {boolean bolean =false;
                     do{
                    chiffre = clavier.nextInt();
                    if(chiffre<31 || chiffre >0){
                        bolean = true;
                        for(int j = 0; j<6;j++){
                            if(chiffre==tab[j]){
                                bolean = false;
                                System.out.println("ce nombre est deja entrer");
                            }
     
                        }
                    }else
                             System.out.println("valeur entrer invalide");
                     }while(bolean == true);
                     chiffre = tab[i];
                }  
            }
            System.out.println("Votre combinaision de 6 chiffres est "+Arrays.toString(tab));
         return tab;

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    1. chiffre = tab[i];.

      A gauche de l'opérateur d'affectation (=), on a la variable affectée, celle dont on change la valeur. A droite de cet opérateur, la valeur (ou l'expression qui détermine la valeur) qu'on affecte.
      Dans ton code, tu mets tab[i] dans chiffre, alors qu'à priori c'est l'inverse que tu veux faire (stocker les valeurs dans le tableau).
    2. Ce n'est pas l'unique problème...

      1. if(chiffre<31 || chiffre >0){.

        Vraiment ?


        (chiffre>0 && chiffre<31){ signifie à la fois chiffre >0 et chiffre<31. Il faut les deux conditions vraies pour que le et le soit. Donc si l'une est fausse, toute la condition l'est et on n'entre pas dans le if

        (chiffre>0 || chiffre<31){ signifie soit chiffre >0 soit chiffre<31. Si une des deux conditions est vraie le ou l'est. Et si les deux sont vraies en même temps (si c'est possible) la condition l'est aussi. Donc dans ton cas, si chiffre vaut -100, ou 0, alors chiffre<0 est vraie, donc on entre dans le if, et pareil si chiffre vaut 400 ou 42 (puis que c'est >0). Comme tous les int sont soit supérieures à 0 soit inférieures à 31, on entre toujours dans le if (et la valeur entrée n'est jamais invalide). Alors que manifestement, ce n'est pas ce que tu veux.

      2. Code : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        4
        5
        6
        7
        8
        bolean = true;
                        for(int j = 0; j<6;j++){
                            if(chiffre==tab[j]){
                                bolean = false;
                                System.out.println("ce nombre est deja entrer");
                            }
         
                        }
        et

        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        }while(bolean == true);
        Donc tu fais ressaisir la valeur tant que bolean est vrai (au passage, un nom de variable plus significatif aiderait bien à la compréhension, genre, par exemple, valeurInvalide). Donc bolean est vrai signifie "valeur invalide". Autrement dit, bolean est faux signifie "valeur valide".
        Si le nombre saisi est déjà dans le tableau, tu fais que bolean soit false. Donc dès qu'on saisit une valeur déjà saisie, on considère que la valeur est valide.

        En plus, le bolean = true; juste avant la boucle fait que si le nombre n'est pas déjà dans le tableau, tu boucles forcément pour faire ressaisir, indéfiniment.

        Avec le nom valeurInvalide, tu sauras plus facilement quand il faut mettre true dedans ou false.

      3. Code : Sélectionner tout - Visualiser dans une fenêtre à part
        for(int j = 0; j<6;j++){
        1. déjà il est toujours préférable d'utiliser les bornes d'un tableau plutôt qu'une valeur en dur comme 6, comme ça si tu changes la taille du tableau, pas besoin de modifier la borne dans le for (tu peux oublier, ou tu pourrais avoir 30, ou 50, ou plus, boucles à changer éventuellement...)
        2. en plus, comme tu es en train de saisir la valeur se position i, pas besoin d'aller jusqu'au bout du tableau, tu peux te limiter aux valeurs déjà saisies (celles avant la position i). Surtout qu'un tableau de int est initialisé avec des 0, donc ça veut dire que tu ne peux pas saisir de 0, dès le début (il est forcément déjà dans le tableau). Même si tu ne veux pas pouvoir saisir de 0, autant ne pas tester ce qui n'a pas d'intérêt à être testé.






    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 à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Mon dieu! Merci pour ce message clair et détaillé! J’apprécie vraiment!

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

Discussions similaires

  1. Débutant en Javascript : problème de tableau !
    Par bluheim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/11/2005, 16h03
  2. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 08h18
  3. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 21h30
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 12h09

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