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

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Random dans un pattern

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Random dans un pattern

n°1934443
Kineas
Posté le 22-10-2009 à 11:05:55  profilanswer
 

Bonjour à tous,  
 
Je lutte depuis un moment maintenant sur quelque chose que j'essaie de faire en java et je viens voir si quelqu'un aurait une idée  :??:  
 
Donc voilà mon problème :  
 
J'ai une chaîne de type expression régulière, par exemple : A-H ou 0-8 et j'aimerai récupérer une valeur aléatoire dans cette expréssion régulière.
Donc ça donnerait un truc du genre :  
            maFonction("0-8" ) renvoie 0 ou 1 ou 2 ou 3 etc...  
        et maFonction("A-H" ) renvoie A ou B ou C ou D etc...
 
Je n'ai aps d'idée efficace pour faire ça, si un de vous en a une je suis preneur  :bounce:  

mood
Publicité
Posté le 22-10-2009 à 11:05:55  profilanswer
 

n°1934515
didier1809
${citation_perso}
Posté le 22-10-2009 à 13:47:27  profilanswer
 


Et si tu essaye un truc du genre ?

Code :
  1. mafonction(String pattern){
  2. String[] bornes = pattern.split("-" );
  3. Vector vect = new Vector();
  4. if (bornes[0].isNumber()){
  5. int i = bornes[0];
  6. while i <= bornes[1]{
  7. vector.add(i++);
  8. }else{
  9. //Ici il faut incrémenter des lettres
  10. }
  11. return vector.get(myRandom(vector.size()));
  12. }


 
Bien sur ce code ne compile pas, c'est pour l'exemple...
 


---------------
.
n°1934520
intech
Posté le 22-10-2009 à 13:54:08  profilanswer
 

Une idée serait de traduire les caractères en ascii, tu as alors un intervalle dont les deux bornes sont des nombres. Tu peux ensuite utiliser un objet Random de base en java.
 
Je m'explique clairement avec un exemple :
Tu as un intervalle "A-H" ce qui correspond en code ascii à "65-72" (http://www.commentcamarche.net/con [...] ascii.php3), que tu transformes ensuite en "0-7" en soustrayant les deux membres par le plus petit (65 - 65; 72 - 65). Ensuite, code java :

Citation :

java.util.Random random = new java.util.Random(7);
int res = random.nextInt();


Enfin, tu n'as plus qu'à retraduire en caractère l'entier res après lui avoir rajouter 65...
 
En imaginant que res soit égal à 5, tu te retrouves avec 5 + 65 = 70 ce qui correspond à la lettre F.
 
Dis moi si ça fonctionne ! Bonne chance.
InTech


Message édité par intech le 22-10-2009 à 14:15:03
n°1934525
Kineas
Posté le 22-10-2009 à 14:10:01  profilanswer
 

Ca marche en combinant vos 2 réponses :)
 
Je pensais en fait qu'il y avait une solution en utilisant directemnt l'objet Pattern mais je n'ai rien trouvé dans ce sens là.
 
En tout cas merci à vous 2 ;)

n°1934533
intech
Posté le 22-10-2009 à 14:16:22  profilanswer
 

Utilise plutôt le code ASCII au lieu du code HEXA, j'ai mis à jour mon premier POST.

n°1934546
cbeyls
Hail to the King, Baby
Posté le 22-10-2009 à 14:59:01  profilanswer
 

Non je crois que c'est de l'Unicode. didier1809: Vector is bad!
 
Donc à supposer que la chaîne de caractères fasse toujours 3 caractères avec un tiret comme deuxième caractère, tu peux faire:
 

Code :
  1. static Random r = new Random();
  2.  
  3. static char randomChar(String pattern) {
  4.     int min = pattern.charAt(0), max = pattern.charAt(2);
  5.     return (char) (min + r.nextInt(max-min+1));
  6. }

n°1934551
didier1809
${citation_perso}
Posté le 22-10-2009 à 15:05:46  profilanswer
 

cbeyls a écrit :

Non je crois que c'est de l'Unicode. didier1809: Vector is bad!
 
Donc à supposer que la chaîne de caractères fasse toujours 3 caractères avec un tiret comme deuxième caractère, tu peux faire:
 

Code :
  1. static Random r = new Random();
  2.  
  3. static char randomChar(String pattern) {
  4.     int min = pattern.charAt(0), max = pattern.charAt(2);
  5.     return (char) (min + r.nextInt(max-min+1));
  6. }



 
C'est mieux les ArrayList ?
 
(Pas dans ce cas précis mais en général quand on doit utiliser une List)


---------------
.
n°1934596
cbeyls
Hail to the King, Baby
Posté le 22-10-2009 à 15:55:05  profilanswer
 

Oui ArrayList est sensé remplacer Vector. Cette classe n'est pas synchronisée par défaut.


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

  [JAVA] Random dans un pattern

 

Sujets relatifs
aide java: programmation d'une boite a rythme1er Programme JAVA
lancer une execution d'un programme a paritr d'une interface javasuppresion automatique d'une methode de notre programme java
[Résolu]Prog java ecoute même quand pas focus dans WindowsAide JAVA
erreur tomcat: java.lang.NoClassDefFoundError[Boost::random] Template comme argument d'une fonction...
règle d'écriture de l'URL pattern dans le web.xmlcalcul mathematique simple, optimisation Java
Plus de sujets relatifs à : [JAVA] Random dans un pattern


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