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

JDBC Java Discussion :

Boucle for sur boucle while


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Points : 76
    Points
    76
    Par défaut Boucle for sur boucle while
    bonsoir
    je veux tester une requette à partie d'un numéro quelconque
    par exemple j'ai le numéro 10, alors je veux tester numéro par numéro jusu'à 1
    si le numéro existe dans la colonne de la table sql alors passer au suivant vl--
    sinon afficher un message
    voilà ce que j'ai fait
    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
     
     
    stmt = conn.createStatement();
    ResultSet res=stmt.executeQuery( "SELECT num FROM table ");                         
    int vl=10;
    boolean found = false;
    while(res.next()) {
        do{
            if(vl==Integer.parseInt(res.getString(1))){
     
            found = true;
            vl--;
            break;       
            }
     
        else if(!found){       
        System.out.print("NO");
        break;
     }       
    }while(vl>1);       }
     res.close();

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Et quel est le problème ? Y'a t'il une erreur ?

    Quel est le but de ce code ? Que cherches tu a tester ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(vl==Integer.parseInt(res.getString(1))){
     found = true;
     vl--;
     break;       
    }
    C'est pas très beau..

    Écris plutôt quelque chose comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while (!found && res.next())
    {
     // ......
      found = (vl==Integer.parseInt(res.getString(1))
     
      if (!found) System.out.println("No");
    }

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Points : 76
    Points
    76
    Par défaut
    merci çà marche avec ce code:
    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
     
    for(int vl=20;vl>1;vl--) {
    while(res.next())
                    {
                        boolean found = false;
                       if(Integer.parseInt(res.getString(1))==vl)
                       {
                           System.out.print("exist"+vl);
                           found = true;
                           break;
                       }
                       else if (!found){
                             System.out.print("NO"+vl);
                           break;
                    }
                       }
    Ce que je veux c'est tester en commençant par 10 par exemple donc si 10 existe dans la base de données alors passer à 10-- sinon afficher un message NO ainsi de suite

  4. #4
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par cisco.nat Voir le message
    merci çà marche avec ce code:
    J'ai pas dis que ça marchait pas, mais que c’était pas beau(pas bien). En programmation il y a des principes et des convention de codage a respecter pour une meilleure compréhension des codes source (et donc, entre autre, pour une meilleure maintenabilité des applications).

    Quand on lit ton code on a pas vraiment envie de savoir comment il marche..

    Tu vas créer autant de booleen que de tour de boucle alors qu'avec un seul tu fais la même chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(Integer.parseInt(res.getString(1))==vl)
    {
      System.out.print("exist"+vl);
      found = true;
       break;
    }
    else if (!found){
      System.out.print("NO"+vl);
      break;
    }
    En gros :

    Si on trouve :
    On met trouve a true
    On break
    Sinon c'est qu'on a pas trouvé
    On break aussi

    Double break inutile, tu peux utiliser l'expression que je t'ai déjà exposer plus haut et t'en servir comme condition de boucle pour éviter ce genre de mauvaise pratique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int vl=20;vl>1;vl--) {
    while(res.next())
    Tu testes si ta requête est un chiffre entre 2 et 20 (?)

    Tu refais une requête a chaque tour de boucle ? Car la comme l'analyse de la requête est imbriquer dans ta boucle for il va falloir faire autant de requête que de tour. Pourquoi ne pas faire l'inverse plutôt ?

    Sinon je réitère ma question précédente, y'a t'il un problème ou quelque chose que l'on puisse faire pour toi ?

    Cdt.

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Points : 76
    Points
    76
    Par défaut
    non pas du tout juste votre code ne contient pas aucune décrémentation pour le numéro 10 sachant que moi l'essentiel c'est que je dois tester numéro par numéro de 10 à 1 s'il existe dans la base ok décrémente et passe au suivant sinon faire des instructions.
    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
     
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+getdb(), "root", "123456");     
                    stmt = conn.createStatement();
    ResultSet res=stmt.executeQuery( "SELECT VLAN FROM tout ");                         
            for(vl=20;vl>1;vl--) {
    while(res.next())
                    {
                        boolean found = false;
                       if(Integer.parseInt(res.getString(1))==vl)
                       {
                           System.out.print("exist"+vl);
                           found = true;
                           break;
                       }
                       else if (!found){
                            ....[Faire des instructions]
     
                             break;
                    }
                       }              
                   }
     res.close();

  6. #6
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Il est pas complet c'est juste pour la structure..


    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
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+getdb(), "root", "123456");     
    stmt = conn.createStatement();
    ResultSet res=stmt.executeQuery( "SELECT VLAN FROM tout "); 
    boolean found = false;                        
    for(vl=20;vl>1;vl--) {
         while res.next() && !found){
     
    		found = Integer.parseInt(res.getString(1)) == vl;
     
    		if(found)
    			System.out.print("exist"+vl);
    		else
    			[Faire des instructions]          
        }
        found = false;
    }
    res.close();
    je dois tester numéro par numéro de 10 à 1
    Ici vous allez de 20 a 2.

  7. #7
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Points : 76
    Points
    76
    Par défaut
    c'est pas grave juste exemple
    pour ce code çà marche pas lorsque je fait un system.out après le else
    il m'affiche plusieurs 19 le 20 existe dans la base alors que tous les autre nombre moins de 20 non .
    Mais il affiche juste plein de 19 et n’arrête à cause de la boucle

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

Discussions similaires

  1. Boucle for sur fichiers sauf un !
    Par coincoin22 dans le forum Linux
    Réponses: 4
    Dernier message: 13/08/2007, 14h41
  2. boucle "for" dans "do while"
    Par oranoutan dans le forum C#
    Réponses: 13
    Dernier message: 05/06/2007, 21h13
  3. [BATCH] Aide sur boucle for et test
    Par t_om84 dans le forum Windows
    Réponses: 3
    Dernier message: 07/06/2006, 10h12
  4. [Eval] Problème de boucle for sur des tableaux
    Par battle_benny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/01/2006, 23h55
  5. Réponses: 3
    Dernier message: 03/11/2005, 19h22

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