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

Java Discussion :

[Débutant] Exceptions & Optimisation


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Par défaut [Débutant] Exceptions & Optimisation
    Bonjour, j'ai deux problèmes.
    Sur le premier, je voulais utiliser des exceptions pour gérer un problème. Par exemple, si l'utilisateur entre un numéro qui n'est pas conforme, cad dont la taille n'est pas comprise entre 10 et 999, ou vaut un nombre interdit (ce ne sont que des exemples); donc s'il entre un numéro interdit je devrais renvoyer une exception. En fait, je n'ai pas vu cela en cours et je voudrais biens améliorer mon application en les utilisant. Quelqu'un pourrait il m'expliquer comment les utilise-t-on?

    Deuxièmement, je dois faire un petit algorithme qui doit déterminer le temps en secondes passé par un utilisateur sur Internet en heures creuses et en heures pleines. Sachant que je dispose de son temps de connection en secondes, et de sa date de connection; voilà mon algorithme :
    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
        private void calculHeurePleineCreuse (int duree)
            {
            dureeHeurePleine = 0;    
            dureeHeureCreuse = 0; 
            Calendar start = new GregorianCalendar();
            start.setTime(dateDebutAppel);
     
            Calendar end = new GregorianCalendar();
            end.setTime( findEndConnectionDate(dateDebutAppel, duree) );   // la méthode permet de trouver la date de déconnection, elle est supposée fonctionnelle  :wink:  
     
            while (start.before(end))
                {    
     
                if (start.get(end.HOUR_OF_DAY) < 8 || 
                ((start.get(end.HOUR_OF_DAY) == 8) && (start.get(end.MINUTE) == 0) 
                && (start.get(end.SECOND) == 0) && (start.get(end.MILLISECOND) == 0)))
     
                    dureeHeureCreuse ++;              
                else if (start.get(end.HOUR_OF_DAY) < 19 || 
                ((start.get(end.HOUR_OF_DAY) == 19) && (start.get(end.MINUTE) == 0) 
                && (start.get(end.SECOND) == 0) && (start.get(end.MILLISECOND) == 0)))
     
                    dureeHeurePleine ++;  
                else                 
     
                    dureeHeureCreuse ++;                 
     
                start.setTimeInMillis(start.getTimeInMillis() + 1000);
     
                }
    Le problème est que je ne maitrise pas trop bien les objets Date, j'ai dû apprendre en utilisant la bibliothèque de classes de chez Sun. Je me demande s'il y a un moyen de faire plus simple. Par exemple en ne passant pas par les Calendar mais en comparant les dates de connection, déconnection avec un objet Date dont seules les champs d'heures serait initialisés et ensuite il suffirait de comparer si la date vient avant ou après l'heure limite...Mais je n'y arrive pas...
    Si des âmes charitables pouvaient m'éclairer...
    D'avance Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 135
    Par défaut
    pour traiter une exception il faut que tu lances une exception quand tu le veux cad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(chiffre<10 || chiffre> 999 )
    {
    throw new Exception("ton explication);
    }
    apres tu peux evidemment thro new Exception en artihmeticException ou autre a toi d'adapter selon le type d'exception désirée.

    pour le poblème des dates je suis nul... désolé!

  3. #3
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Par défaut
    Citation Envoyé par djsbens
    pour traiter une exception il faut que tu lances une exception quand tu le veux cad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(chiffre<10 || chiffre> 999 )
    {
    throw new Exception("ton explication);
    }
    apres tu peux evidemment thro new Exception en artihmeticException ou autre a toi d'adapter selon le type d'exception désirée.

    pour le poblème des dates je suis nul... désolé!
    Merci. En fait, je sèche un peu...je ne vois pas quoi mettre à la place de ("ton explication)...il y a pas moyen de refaire une demande d'entrée du nombre, ou afficher un message d'erreur...?

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Citation Envoyé par Sylvester
    Merci. En fait, je sèche un peu...je ne vois pas quoi mettre à la place de ("ton explication)...il y a pas moyen de refaire une demande d'entrée du nombre, ou afficher un message d'erreur...?
    Ce n'est pas une exception qu'il te faut dans ce cas... peut-être un JOptionPane plutôt... http://java.sun.com/docs/books/tutor...ts/dialog.html
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Je pense que l'orienter vers les JOptionPane est un peu prématuré vu qu'il ne connait pas encore le mécanisme des exceptions...
    Pour répondre à ton problème, à la place de "ton application", tu mets le message d'erreur que tu souhaites.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(nombre<10||nombre>999){
       throw new Exception("Le nombre est inferieur a 10 ou superieur à 999 !");
    }
    pour compléter le mesage de djsbens, en fait tu peux personnaliser, en créant ta propre exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class SaisieException extends Exception{
       public SaisieException(String message){
          super(message);
       }
    }
    ...
    if(nombre<10||nombre>999){
       throw new SasieException("Le nombre est inferieur a 10 ou superieur à 999 !");
    }
    enfin si tu veux faire un truc qui a de la gueule ( en interface graphique ) avex JOptionPane, tu mets ce code là dans la fenetre qui te sers à saisir le nombre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(nombre<10||nombre>999){
       JOptionPane.showMessageDialog(this,"Le nombre est inferieur a 10 ou superieur à 999 !","Erreur de saisie",JOptionPane.ERROR_MESSAGE);
       ...
    }
    En espérant t'avoir éclairé...

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Citation Envoyé par iohack
    Je pense que l'orienter vers les JOptionPane est un peu prématuré vu qu'il ne connait pas encore le mécanisme des exceptions...
    Cela dépend de la manière dont il entre sa durée...

    Il est vrai qu'utiliser une exception pour gérer ce problème, ce serait bien... et ça permettrait de faire du code réutilisable qui n'afficherait pas obligatoirement une JOptionPane en cas de soucis, et laisserait le programmeur gérer l'exception en conséquence.

    Par contre, tu me dis que c'est prématuré, et tu lui présentes un exemple pour utiliser un JOptionPane qui ne fait plus appel à une exception, mais directement à la valeur entrée... euh...
    Sans rancune, tu as précisé que ça aurait de la gueule (en interface graphique)!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 135
    Par défaut
    On va finir par installer un ring!

    Sinon sylvester c'est plus clair comme ca?

  8. #8
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Par défaut
    Citation Envoyé par djsbens
    On va finir par installer un ring!

    Sinon sylvester c'est plus clair comme ca?
    Je dirais que oui... 8)
    Merci les gars

  9. #9
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    haaaaa !!! je comprenais paass !!
    hum
    moi je cherchais dans les TokenRing ..... et je m'étonnais de pas comprendre le rapport ...

    dsl ... déformation professionnelle

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/05/2006, 11h14
  2. [Débutant] Accélérer et optimiser ses scripts PHP
    Par Metallic-84s dans le forum Langage
    Réponses: 6
    Dernier message: 24/03/2006, 12h37
  3. [MySQL] Question de débutant sur l'optimisation d'un site
    Par digger dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/02/2006, 14h29
  4. [Débutant][Exception] Creer Exception
    Par florantine dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2006, 09h23
  5. [JDBC][Débutant] Exception : No suitable driver
    Par Prophetis dans le forum JDBC
    Réponses: 7
    Dernier message: 24/10/2005, 23h50

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