Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1258 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  petit soucis avec le try catch

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

petit soucis avec le try catch

n°1949790
Arkanisss
Posté le 12-12-2009 à 21:27:23  profilanswer
 

Bonjour, je vais vous exposer mon problème.
j'ai une boucle do while qui demande à l'utilisateur de saisir un string tant que le string n'est pas valide.
Ce string doit être de la forme "0,4,26" sachant que je ne connais pas à l'avance la taille qu'il aura, mais je peux la récuperer en faisant" taille = monString.length () ;"
entre chaque virgule il doit y avoir soit un caractère compris entre 0 et 9 soit du coup deux caractères compris entre 10 et 49; de telle sorte que l'utilisateur ne donne que des valeurs comprises entre 0 et 49
Je pensais faire un try catch mais je n'en ai jamais fait et je ne vois pas du tout quoi mettre dedans.
et l'utilisation d'un boucle do while est-elle nécessaire avec un try catch?
 
Merci d'avances pour vos réponses.

mood
Publicité
Posté le 12-12-2009 à 21:27:23  profilanswer
 

n°1949806
Siluro
Posté le 12-12-2009 à 22:40:43  profilanswer
 

Un try/catch permet d'effectuer une(des) manoeuvre(s) (située(s) dans la portée du try) susceptible(s) de provoquer une exception (on "tombe" alors dans la portée du catch). Selon l'exception, on peut alors agir en conséquence.

Code :
  1. try {
  2. // ici je fais un truc cochon qui va "throw"er une exception du type TrucCochonException
  3. } catch (TrucCochonException e) {
  4. // j'agis en conséquence du truc cochon
  5. } catch (TrucDegueuException e) {
  6. // j'agis en conséquence du truc dégueu
  7. }


 
Comme tu le vois, on n'a pas nécessairement besoin d'un do/while pour utiliser un try/catch.
 
Ce que tu peux faire :
- dans le do{}, tu fais le try/catch qui va récupérer la String et l'analyser.
- Si l'analyse dit que la String saisie est incorrecte, tu throw une Exception. Exemple alakon pour lâcher une exception :

Code :
  1. String maString = "kikoolol";
  2. if (maString.length() > 2) {
  3. throw new Exception("Y'a beaucoup de lettres dis donc" );
  4. }


- Par conséquent, le programme ira dans la portée du catch{} (tu diras à l'utilisateur que la String est incorrecte).
- A la fin du catch{} : le do{} pourra continuer.
 
Généralement, on se crée une classe perso qui hérite de la classe java.lang.Exception pour thrower sa propre Exception (pour savoir exactement quel type d'exception a été rencontrée dans le programme).

n°1949807
Siluro
Posté le 12-12-2009 à 22:43:03  profilanswer
 

Ah oups, j'avais compris que tu devais utiliser un try/catch avec ton do/while ! Bref, try/catch permet d'intercepter une exception.
 
Si tu veux analyser le contenu de ta String, regarde du côté des expressions régulières.

n°1949830
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-12-2009 à 10:36:35  profilanswer
 

Siluro a écrit :

Ah oups, j'avais compris que tu devais utiliser un try/catch avec ton do/while ! Bref, try/catch permet d'intercepter une exception.
 
Si tu veux analyser le contenu de ta String, regarde du côté des expressions régulières.


une expression régulière pour ça ? mais ça va pas non ? [:mlc]
un StringTokenizer suffira largement, suivi d'un test pour chaque token extrait, afin de voir s'il est compris entre 0 et 49 et puis voilà.
en tout cas, les exceptions n'ont strictement rien à voir là dedans

n°1949844
Arkanisss
Posté le 13-12-2009 à 13:58:03  profilanswer
 

bon alors j'ai suivi ton conseil Harkonnen (enfin il me semble :)) donc voila ce que j'ai écrit (mais pas encore testé) :  
do {
 if (peutmanger != true) {
  System.out.println ("Où voulez vous le déplacer?" ) ;
 }  
 else if {
  System.out.println ("Si vous voulez manger un pion, donnez la suite complete des différentes pauses sur le plateau de votre pion (séparée par une virgule), sinon donnez juste la position d'arrivée;" ) ;
 }
 arrivee = //lire ;
 if (arrivee.length () = 0) {
  valide = false ;
 }
 else if {
  arrivee.new(arrivee) ; // convertit en StringTOkenizer
  taille = arrivee.countTokens () ; // donne le nb de token
  int i = 0 ;
  do {
   i++ ;
   token = arrivee.nextTokenDelim("," );
   tokenInt = Integer.parseInt (token) ;
   if (tokenInt < 0 || tokenInt > 49) {
    valide = false ;
   }
   else if {
    valide = true ;
   }
  } while  (valide = true || i < taille) ;
 }
} while (valide = false) ;
 
par contre je ne suis pas sur pour le countToken () je n'ai pas précisé le separateur est-ce juste si c'est une virgule et non pas un par défaut (espace tab ou retour à la ligne il me semble)?
 
Merci pour votre aide!

n°1949862
cbeyls
Hail to the King, Baby
Posté le 13-12-2009 à 16:28:54  profilanswer
 

Tu ferais mieux de lever une NumberFormatException et l'intercepter au lieu d'utiliser un booléen "valide". De toutes manières, Integer.parseInt() est susceptible de lever cette exception donc tu dois quand même l'intercepter.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  petit soucis avec le try catch

 

Sujets relatifs
Action script : un petit souci étrangejapplet petit soucis d'appel :/
Petit soucis de script VBS[ejb] petit probleme avec le context.lookup()
Problème dans la rédaction d'un petit scriptProblême avec un petit script javascript
aide pour Petit projetPetit programme tout simple
Plus de sujets relatifs à : petit soucis avec le try catch


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR