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

Langage Java Discussion :

Boucle for contient un boolean entre deux classes


Sujet :

Langage 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 contient un boolean entre deux classes
    Bonjour
    j'ai une boucle avec laquelle je cherche un nombre dans la tables
    premièrement je cherche dans la table avec une requette sql si je le trouve je fais le break et je passe au nombre suivant ...
    sinon j'entre dans un autre code d'une autre fonction
    alors là où je me suis bloquée
    si je trouve aussi ce nombre dans ce code je dois faire la même chose break et retourner à la boucle de la première classe et passer au suivant avec boolean = true
    code du la première classe:
    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
     
    ResultSet res=stmt.executeQuery( "SELECT VLAN FROM tout ");
                    for(vl=3749;vl>1;vl--) {
                        while(res.next())
                        {
                            boolean found = false;
                            if(Integer.parseInt(res.getString(1))==vl)
                            {
                                found = true;
                                break;
                            }
                            else if (!found){
                                Classe2.Config(vl);                          
                                break;
                            }
                        }
    ici c'est correct si je trouve je passe au suivant

    mais dans l'autre classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Classe2() {
     
        }
        public String Config(Integer vl){
    if(Integer.parseInt(vlan.trim())==vl){
        System.out.print("\n exist \n");   // C'est ici où je dois faire le boolean=true et retourner à la boucle 
    else
    // continue le traitement
    }
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    J'ai du mal à comprendre quel est le but de ce code :/ Il y a un mélange de SQL et de logique java fortement suspect. Quel est l'opération recherchée? Parce que ta boucle en java fait de sérieuses approximations:
    1) elle suppose que les VLAN retourné par la DB sont en ordre inverse (ce qui n'est pas garanti)
    2) Elle suppose qu'il y a une valeur 3749 dans la DB, et ainsi de suite sans trous jusque 1
    3) tant que ca colle pas, et que ça n'a jamais collé, elle s'obstine à appeler Classe2.Config(vl), ce qui réalise je ne sais combien d'appels potentiels.

    Si le but est de compter le nombre de VLAN entre 3749 et 1,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count (VLAN) FROM tout where VLAN<=3749 and VLAN >1
    Au delà de ça, comme je ne comprend ni avec le code ni avec tes explications ce que tu compte faire, ça risque d'être difficile de t'aider. Mais ce n'est en général pas bon, dans un code, quand on vois qu'une fonction java récupère toute une table pour faire du comptage ou du test chez elle. SQL et tout à fait capable de faire le comptage plus proprement et de manière lisible dans la base de données.

  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
    Je dois commencer la recherche en commençant par ce nombre jusqu'à 1 à chaque fois où je trouve le numéro dans la table je doit stopper sinon continuer
    Au début j'ai fais a recherche dans la base si je trouve par exemple 3749 je passe au suivant si alors que si je ne trouve pas un numéro je passe à la 2ème classe et je fais un traitement avec des commandes j'ai voulu pas es écrire parce que c'est trop long juste ici si je trouve aussi ce numéro dans le résultat de ce traitement je veux faire comme la 1ère classe boolean=true et stopper et passer au suivant
    la boucle est décrémentée
    Merci

  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
    Sujet déjà créé --->

    Je rajouterai que à mon avis il te manque des connaissances de base en programmation et que tu fonces tête baissé sans vraiment comprendre ce que tu fais (cf tous les topics que tu as créés sur ce programme). Le titre de celui ci le prouve.
    "Boucle for contient un boolean entre deux classes", ça n'a pas vraiment de sens.

    Ça ne me gêne pas d'expliquer les choses et de prendre du temps pour répondre. Je suis aussi passé par là et encore maintenant je suis content lorsque que j'ai un problème, que des gens prennent de leurs temps pour m'expliquer. Mais à force de ne pas prendre en compte les remarques que l'on te fait ça devient un peu énervant.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par cisco.nat Voir le message
    Je dois commencer la recherche en commençant par ce nombre jusqu'à 1 à chaque fois où je trouve le numéro dans la table je doit stopper sinon continuer
    Au début j'ai fais a recherche dans la base si je trouve par exemple 3749 je passe au suivant si alors que si je ne trouve pas un numéro je passe à la 2ème classe et je fais un traitement avec des commandes j'ai voulu pas es écrire parce que c'est trop long juste ici si je trouve aussi ce numéro dans le résultat de ce traitement je veux faire comme la 1ère classe boolean=true et stopper et passer au suivant
    la boucle est décrémentée
    Merci
    En gros tu dois faire un traitement pour toutes les entrées manquantes entre 1 et 3749? Ce n'est pas du tout ce que fait ton code.

    Soit tu fais un SQL retournant les données manquantes, et tu traite (et j'admet, le SQL pour faire ça est tordu donc peut être à éviter)

    Soit tu retourne les valeur dans ce range (cf le SQL que je t'ai donné), tu stocke tout ça dans un Set et puis seulement tu fais ton itération. Parce que là tu essaie de faire ton traitement et ton parcours des lignes simultanément, ce qui ne peux amener que des emmerdes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set<Integer> present = new HashSet<Integer>();
    ResultSet res=stmt.executeQuery( "SELECT VLAN FROM tout where VLAN>1 and VLAN < 3749");
    while(res.next())
       present.add(res.getInt(1));
    res.close();
    for (int i = 0; i< 3749; i++){
        if (!present.contains(i))
          Classe2.Config(i);
    }

  6. #6
    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 cava je l'ai résolu juste avec les break .. Merci bien

Discussions similaires

  1. Réponses: 12
    Dernier message: 19/04/2008, 16h19
  2. [POO] Héritage entre deux classes
    Par Lenaick dans le forum Langage
    Réponses: 5
    Dernier message: 16/10/2007, 09h53
  3. Association entre deux classes en dotnet
    Par lulu3111 dans le forum C++/CLI
    Réponses: 4
    Dernier message: 18/04/2007, 21h15
  4. Passage d'un objet entre deux classes
    Par ericlemoustic dans le forum Langage
    Réponses: 2
    Dernier message: 13/10/2006, 09h58
  5. Réponses: 5
    Dernier message: 17/08/2005, 12h40

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