Vérifier la présence d'un int dans un string [Résolu/Fermé]

- - Dernière réponse :  AlexStudent - 9 nov. 2016 à 13:34
Bonjour,

J'ai un travail à faire qui consiste à générer des nombres aléatoires allant de 1 à 5 et ( ex: 21453 ). J'utilise la méthode math.random et mon intention est d'appeler, à chaque nouveau chiffre généré, une méthode qui regarde si le chiffre est déjà présent dans un string que j'aurai initialisé, si OUI on ne le prend pas et on génère un autre nombre aléatoire entre 1 et 5 et si NON on met ce chiffre dans le string et on génère un autre nombre aléatoire, et bien sûr une fois que le string contient 5 chiffres on arrête tout et on return le string.

La seule chose qui me manque c'est savoir comment passer en revue un string pour voir si le chiffre généré en fait parti ou pas, quelqu'un saurait-il m'aider svp? Merci d'avance.

Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
16072
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 novembre 2019
2451
1
Merci
Bonjour,

En complément de la réponse e Whismeril je rajouterai que manipuler un String n'est pas viable. Les nombres de 1 à 5 c'est un cas très particulier mais si on reprends le problème pour aller de 1 à 20 par exemple ça ne fonctionne plus avec un String car il y a plusieurs chiffres à prendre en compte pour les nombres.
La bonne solution est de manipuler directement des int soit dans un tableau soit dans une collection et d'opérer le mélange par permutations successives.

Remarque : Math.random n'est pas forcément la meilleure méthode dans ton cas, la classe Random fourni des méthodes plus utiles comme par exemple nextInt.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 70880 internautes nous ont dit merci ce mois-ci

Messages postés
13954
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 novembre 2019
417
0
Merci
Bonjour

deux solutions qui marchent quoique tu veuilles tirer au sort sans doublon (jeu de cartes, numéro de 1 à 5, loto , membres d'un jury etc....)

Tu crées et remplies une collection avec tous les éléments possiblement tirés au sort (une List par exemple qui contiendrait 1, 2, 3, 4 et 5).
  • Option1
    • dans une boucle plusieurs fois de suite (à toi de voir combien de fois), tu génères aléatoirement deux index de 0 à 4 et tu inverse la place des 2 éléments. Ceci fonctionne aussi avec un tableau.
  • Option2
    • dans une boucle qui dure tant que la collection contient des éléments, tu génères aléatoirement un index entre 0 et le nombre d'éléments actuels de la collection. Tu ajoutes l'élément correspondant à l'index dans une seconde collection et tu l'enlèves de la première.


Une fois que tu as ta collection mélangée, tu en fait un string.

PS, je ne code pas en Java, donc je ne te montrerais pas de code, mais je lis suffisamment le Java pour savoir que mes deux options sont possibles.
0
Merci
Merci pour vos réponses, j'ai fait avec un tableau et ça fonctionne parfaitement. :)