Salut la famille,
J'ai besoin d'une méthode qui va me permettre de générer un code unique ou aléatoire de 5 chiffres, en rentrant des paramètres dans un Edittext ou plusieurs edittext
Merci !!!
Version imprimable
Salut la famille,
J'ai besoin d'une méthode qui va me permettre de générer un code unique ou aléatoire de 5 chiffres, en rentrant des paramètres dans un Edittext ou plusieurs edittext
Merci !!!
Salut,
Très bien et donc quel est ton problème pour écrire le code qui fait ça ?
C'est le code que je connais pas que je cherche !!!
Unique ou aléatoire, il faudrait savoir. Tu ne précises pas si ces codes sont numériques, alphabétiques ou alphanumériques.
Pour générer des nombres aléatoires, en pur Java (je ne sais pas s'il y a des classes spécifiques Android), il y a la classe Random (limité à 5 chiffres, donc avec un max de 100000 (exclu)). Mais tu ne pourras pas garantir l'unicité sans avoir une table des nombres déjà tirés (donc tirer un nouveau nombre tant qu'il n'est pas dans cette table et mettre tout nouveaux nombres tirés dans cette table). La nécessité d'une table pose le problème de la persistence : on ne sait pas si tu as besoin de ces codes au cours d'une seule session d'exécution, ou de plusieurs, ni si cette table doit être partagée entre plusieurs utilisateurs. Un autre moyen serait de générer la liste de tous les nombres et de la mélanger (méthode Collections.shuffle()), mais ça pose un gros problème de mémoire (à moins de la stocker dans une base de données, auquel cas, il vaudrait mieux utiliser les moyens intégrés du SGBD de générer des identifiants).
Pour générer un nombre unique incrémental, tu pourras simplement utiliser en monothread un simple int, et en multithread un AtomicInteger.
Pour générer des chaînes de caractères, tu peux générer avec ces mêmes moyens une suite de nombres compris dans l'intervalle des caractères voulus et les assembler dans une String.
Accessoirement, la classe UUID permet de générer des codes pour lesquels il y a très peu de risques statistiques qu'ils ne soient pas uniques, mais ces codes ont une longueur bien supérieur à 5 caractères.
Je veux juste genere des code numeriques
Pour générer un code aléatoire de 5 chiffres :
Code:
1
2 Random rand = new Random(); int randomNum = rand.nextInt((99999 - 10000) + 1) + 10000;