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 :

tableau de booleans


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 133
    Par défaut tableau de booleans
    Salut à tous!
    En fait je travaille sur un petit jeu qui est tel que j'ai un tableau A={4,5,6}.Je dois toucher toutes les valeurs du tableau A.Par exemple quand je propose 6, j'ai comme reponse "touché".Quand je propose 2 qui n'est pas dans le tableau, il me repond "manqué".Mais le problème qui se pose est que quand je propose 6 une seconde fois il me dit encore "touché".En fait une valeur ne peut être touchée qu'une fois.
    J'ai eu une première idée de remplacer par -1 une valeur touchée.Dans ce sens ça marche.
    Mais j'ai du mal avec une deuxième idée qui consiste à utiliser un deuxième tableau B de booleans qui me signale qu'une valeur a été déjà touchée quand je propose cette valeur pour une seconde fois.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 133
    Par défaut
    Juste une précision, j'aimerais le faire sans utiliser ArrayList

  3. #3
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    tu n'as qu'à créer un tableau de boolean de même taille que ton tableau A, et tu l'initialises à false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boolean touches = new boolean[A.length];
    et puis dans la boucle où tu "touches" une valeur du tableau, tu testes d'abord si la case correspondantes (qui a le même index) dans le tableau de boolean est true ou false
    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
     
    int x = 6;
    int[] A = {4, 5, 6};
    boolean touches = new boolean[A.length];
    for (int i = 0; i < A.length; i++)
    {
        if (A[i] == x)
        {
            //On teste si cette valeur a déjà été touché
            if (!touches[i])     //si elle n'a pas été touché
            {
                System.out.println("Touché");
                //et puis on précise que cette case a été touché dans le tableau de boolean
                touches[i] = true;
            }
        }
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 133
    Par défaut
    Ok merci ça me parait clair! je vais essayer de le tester!! à tout à l'heure

  5. #5
    Membre expérimenté Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Par défaut
    Sinon au lieu d'utiliser deux tableaux tu peux faire avec un HashTable<Integer,Boolean>

  6. #6
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    ce serait plutôt Hashtable<Integer, Boolean>

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 133
    Par défaut
    salut! voici mon code.Mais le probleme est que quand je donne 6, le programme me dit touché, quand je donne à nouveau 6, il me dit encore touché alors que je veux qu'il le dise une seule fois.En fait le true n'est pas conservé.
    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
    :
    class PointCom{
    int [] cellules;
    int nbreTouches=0;
     
    public void setCellules(int[] places){
    cellules=places;
    }
    public String autoVerif(String stringPropo){
    boolean cellulesT=new boolean[cellules.lentgh];
    int propo=Integer.parseInt(stringPropo);
    String resultat="manqué";
    for(int i=0; i<cellules.length,i++){
    if((propo==cellules[i])&&(cellulesT[i]==false)){
    resultat="touché";
    cellulesT[i]=true;
    nbreTouches++;
    break;}
    else{resultat="manqué";
    }
     
    if(nbreTouches==cellules.length){
    resultat="coulé";
    }
    System.out.println(resultat);
     
    return resultat;
    }
    }

  8. #8
    Membre expérimenté Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Par défaut
    Déjà pas besoin du bloc else puis que résultat est initialisé à "manqué"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    else{resultat="manqué";
    }
    Ce test n'a pas de sens puisque le tableau par defaut est initialisé à false :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if((propo==cellules[i])&&(cellulesT[i]==true)){
        resultat="touché";
        cellulesT[i]=true;
        nbreTouches++;
        break;
    }
    donc c est plutôt ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((propo==cellules[i])&&(!cellulesT[i]))
    ou bien pour plus de lisibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((propo==cellules[i])&&(cellulesT[i]==false))

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 133
    Par défaut
    C'est vrai j'ai fait une erreur quand j'ai tapé le code en fait sur mon ordi c'est cellulesT[i]==false
    merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 133
    Par défaut
    ca ne marche pas malheureusement

  11. #11
    Membre expérimenté Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Par défaut
    Avec le code que j'ai devant les yeux il ne peut pas te renvoyer touché deux fois pour une même valeur sauf si :
    - Tu as la valeur 2 fois dans le tableau et il me semble que c'est normal et correct qu'il te renvoi touché 2 fois.
    - Tu utilises à chaque fois une nouvelle instance de PointCom pour verifier.

    Donc est ce que je peux voir le code qui instancie PointCom et appelle sa méthode pour vérifier la présence d'une valeur .
    J'ai l'impression que ta classe est clean c'est l'appel qui fait défaut.

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

Discussions similaires

  1. Traitement des tableau de boolean
    Par Invité dans le forum Ada
    Réponses: 4
    Dernier message: 13/11/2012, 01h29
  2. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  3. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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