Faire une boucle avec un argument du tableau et définir si args=nombre

Faire une boucle avec un argument du tableau et définir si args=nombre - Java - Programmation

Marsh Posté le 18-06-2013 à 15:21:43    

Bonjour à tous, je cherche actuellement à faire une boucle avec un argument du tableau.
En fait, je travaille sur un petit plugin qui permettra de faire, entre autres, des boucles de musique via une URL.
Le système est simple, le joueur tape /playloop [Durée] [URL].
Le plugin lit la valeur [durée], la multiplie par 20 (les ticks) et au bout de X secondes, relance la commande de lecture de la musique via URL.
Je suis donc face à deux problèmes:
 
Celui de la boucle qui ce relance en fonction de args[0].
Celui qui détecte si args[0] est seulement en chiffres (0123456789), pas de abcd -/\éè et autres caractères.
 
J'ai fais mes recherche pour mes deux problèmes sur internet, mais je n'ai rien trouvé.
 
Merci d'avance.

Reply

Marsh Posté le 18-06-2013 à 15:21:43   

Reply

Marsh Posté le 19-06-2013 à 11:46:56    

Je ne comprend pas bien ton premier problème,
 
Pour le second utilise un try/catch :
 
 

Code :
  1. try{
  2.    int test = String.parseInt(args[0]);
  3.    // ici tu test si argss[0] est bien un entier
  4. }catch(Exception e){
  5.    // si args[0] n'est pas un entier on tombe ici
  6. }


---------------
Mes vente
Reply

Marsh Posté le 19-06-2013 à 13:26:53    

Merci pour la réponse.
Mon premier problème est simple, je souhaite faire une boucle qui boucle quand X = 0, le X étant rentré par l'utilisateur dans la première colonne d'un tableau, et est appelé args[0].
Chaque seconde, le X diminue de 1 (D'ou le X*20, pour obtenir X en secondes et non en ticks)
Ma boucle doit donc faire un tour à chaque fois que X = 0, et à chaque boucle X reprend sa valeur initiale.
 
Cela permet de faire lire une musique en boucle, pour vu que l'utilisateur entre la durée de la musique, jusqu'à ce que le plugin stoppe la boucle.


Message édité par splint33 le 19-06-2013 à 13:28:14
Reply

Marsh Posté le 19-06-2013 à 13:36:24    

grundoc a écrit :

Je ne comprend pas bien ton premier problème,

 

Pour le second utilise un try/catch :

 


Code :
  1. try{
  2.    int test = String.parseInt(args[0]);
  3.    // ici tu test si argss[0] est bien un entier
  4. }catch(Exception e){
  5.    // si args[0] n'est pas un entier on tombe ici
  6. }


 

ce code est faux :s.
Ce n'est pas

Code :
  1. int test = String.parseInt(args[0]);


mais

Code :
  1. int test = Integer.parseInt(args[0]);
 

et il ne faut jamais catcher Exception, ici il vaut mieux catcher NumberFormatException.
Ce qui donne

Code :
  1. try{
  2.    int test = Integer.parseInt(args[0]);
  3.    // ici tu test si args[0] est bien un entier
  4. }catch(NumberFormatException e){
  5.    // si args[0] n'est pas un entier on tombe ici
  6. }
 

Je ne comprends pas ton premier problème. Tu veux faire une boucle tant que x est différent de 0?
Si oui :

Code :
  1. while(x != 0){
  2.    // on fait le travail ici
  3. }
 

J'ai peut-être (certainement) mal compris :s

Message cité 1 fois
Message édité par kms77 le 19-06-2013 à 13:39:43
Reply

Marsh Posté le 19-06-2013 à 14:22:16    

kms77 a écrit :

ce code est faux :s.
Ce n'est pas

Code :
  1. int test = String.parseInt(args[0]);


mais

Code :
  1. int test = Integer.parseInt(args[0]);



 

Yes :D, c'est plutôt comme ça. Par contre pour catcher l'erreur, la classe NumberFormatException est une extension de Exception, donc en utilisant cette dernière cela reviens à catcher toutes les exceptions possible.

 

Pour le problème de la boucle je pense plutôt à

 
Code :
  1. while(lire_la_musique_en_boucle = true){
  2.    for(int i = X, i > 0, i--){
  3.       // Ici ton i décrémente de X à 1.
  4.    }
  5. }


Message édité par grundoc le 19-06-2013 à 14:23:23

---------------
Mes vente
Reply

Marsh Posté le 19-06-2013 à 14:25:14    

grundoc a écrit :

 

Yes :D, c'est plutôt comme ça. Par contre pour catcher l'erreur, la classe NumberFormatException est une extension de Exception, donc en utilisant cette dernière cela reviens à catcher toutes les exceptions possible.

 


 

Oui je suis d'accord mais il est très déconseillé de catcher toutes les exceptions d'un coup. C'est le maaaaal :p


Message édité par kms77 le 19-06-2013 à 14:25:27
Reply

Marsh Posté le 19-06-2013 à 14:30:51    

Le problème c'est que args[0] qui définit X est un String, et que je ne peux pas incrémenter, retirer ou faire quoi que ce soit dessus, car sinon je tente de retirer un int à un string, et il me sort une erreur

Message cité 1 fois
Message édité par splint33 le 19-06-2013 à 14:31:46
Reply

Marsh Posté le 19-06-2013 à 14:54:53    

splint33 a écrit :

Le problème c'est que args[0] qui définit X est un String, et que je ne peux pas incrémenter, retirer ou faire quoi que ce soit dessus, car sinon je tente de retirer un int à un string, et il me sort une erreur


Ce n'est pas un problème, args[0] est un string mais X est un entier. De plus ma boucle ne touche pas au X, elle décrémente i en l'initialisant à X, l'exemple complet te permettra surement de mieux comprendre :
 

Code :
  1. try{
  2.    int X = Integer.parseInt(args[0]);
  3.    // ici tu test si args[0] est bien un entier
  4.    while(lire_la_musique_en_boucle = true){
  5.       for(int i = X, i > 0, i--){
  6.       // Ici ton i décrémente de X à 1.
  7.       }
  8.    }
  9. }catch(NumberFormatException e){
  10.    System.out.err("le premier paramètre doit être un entier !!!" ); //Affiche une erreur dans la console
  11.    // si args[0] n'est pas un entier on tombe ici
  12. }


Et voilà, si le premier argument n'est pas un entier une erreur s'affiche dans ta console. Sinon tant que le booléen lire_la_musique_en_boucle est vrais, le sample sera lu en boucle.


Message édité par grundoc le 19-06-2013 à 14:56:03

---------------
Mes vente
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed