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

avec Java Discussion :

arrêter une méthode


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Points : 26
    Points
    26
    Par défaut arrêter une méthode
    Bonjour,

    je vais essayer de bien expliquer le problème car le titre n'est pas très explicite.
    Dans mon programme de gestion d'emprunts du matériel informatique dans un collège, j'arrive à enregistrer dans une table d'une base MySQL un emprunt qui comporte l'identifiant emprunteur, matériel, date d'emprunt et de retour.
    Pour pouvoir réaliser l'emprunt il faut que le matériel soit disponible et que l'emprunteur ait moins de 5 emprunts en cours. Et c'est juste là le problème. Lorsque le matériel est indisponible, j'arrive à afficher un message "L'objet est déjà emprunté", ensuite l'emprunt n'est pas enregistré, mais l'emprunteur se voit ajouter un nouvel emprunt, alors qu'il n'y a pas eu d'emprunt (enfin, je crois)
    Et je voudrais savoir comment je peux tout arrêter dès que le programme voit que le matériel n'est pas disponible. J'ai mis le code entre IF ... ELSE.
    Que faut-il faire de plus?
    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Difficile de répondre sans voir le code...

    Tu pourrais peut-être tirer profit de l'instruction "return" pour te simplifier la tâche...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Points : 26
    Points
    26
    Par défaut
    Merci Obutterlin pour ta réponse.
    Voici un bout de 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    package College;
     
    import java.sql.*;
    import java.util.ArrayList;
    import javax.swing.JOptionPane;
     
     
    public class EmpruntFactory
    {
        static Connection con = null;
        static PreparedStatement ps = null;
        static EmpruntProf empruntP = new EmpruntProf();
        static EmpruntEleve empruntE = new EmpruntEleve();
     
        public static void InsertP()
        {
            int idE = Integer.parseInt(EmpruntFrame.saisirIDE.getText().trim());
            String cat = EmpruntFrame.saisirCat.getSelectedItem().toString();
            int idM = Integer.parseInt(EmpruntFrame.saisirIDM.getText().trim());
            String dtEP = EmpruntProf.dateEmprunt();
            String dtRP = EmpruntProf.dateRetour();
     
            Professeur pfs = ProfFactory.Select(idE);
            Materiel mat = MaterielFactory.Select(idM);
     
            if (cat.equals("Professeur") && pfs.empruntPossible() && mat.empruntable())
            {
     
            try
            {
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://localhost/emprunts", "root", "sa@admin");
                ps = con.prepareStatement("INSERT INTO empruntsprof (ID_Prof,ID_Mat,Date_Emprunt,Date_Retour) VALUES (?,?,?,?)");
                ps.setInt(1,idE);
                ps.setInt(2,idM);
                ps.setString(3,dtEP);
                ps.setString(4,dtRP);
                ps.execute();
                con.close();
     
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            }
            else if (!mat.empruntable() || !cat.equals("Professeur") || !pfs.empruntPossible())
                ET LA JE NE SAIS PAS QUOI METTRE
            }
    Je n'ai pas compris pour la méthode "return", désolé.

  4. #4
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Salut,

    Si je peux me permettre cela me fait davantage penser a une conception mal faite.

    L'alternative permet de gérer ton problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (ressource disponible) {
         if (emprunt en cours < 5) {
              // code qui gère un emprunt possible
         } else {
              System.err.println("Vous avez déjà atteint votre seuil d'emprunt !");
         }
    } else {
         System.err.println("Ressource indisponible !");
    }
    Tu n'as rien besoin de plus.

    Quand au return, ce n'est pas une méthode, mais une instruction. Cela permet de sortir d'une méthode (à condition qu'elle ne doivent pas retourné un type, sinon il faut alors la faire suivre du type attendu) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void method1() {
         return;
         // code invisible à partir de là
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public boolean method1() {
         return true; // ou false
         // code invisible à partir de là
    }
    Mon point de vue est que cette utilisation révèle un algorithme mal conçu. Il n'y as pas besoin d'autres choses que du for, while, do { } while() et if { } else {}

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par visiwi Voir le message
    Salut,

    Si je peux me permettre cela me fait davantage penser a une conception mal faite.
    Bien sur, tout conseil est le bienvenu!
    Je vais suivre tes conseils.
    Et merci pour l'explication de "return", je ne savais pas.
    Merci encore!

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

Discussions similaires

  1. Arrêter une méthode qui s'exécute en Thread
    Par Mister Nono dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 27/10/2008, 11h43
  2. [Reflection] Exécuter une méthode donnée d'une classe
    Par schousso dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/06/2004, 10h35
  3. Réponses: 3
    Dernier message: 16/04/2004, 16h51
  4. Arrêter une Thread brutalement!
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 21h29
  5. une méthode qui écrit dans la sortie html ?
    Par iubito dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/12/2003, 15h34

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