Si je veux sélectionner au hasard une lettre entre a et z, je suppose que je dois utiliser la classe Random
:
Random Rand = new Random();
Mais comme cela ne génère que des chiffres, que dois-je faire pour appliquer cela aux lettres?
Random r = new Random();
char c = (char) (r.nextInt(26) + 'a');
Les lettres, ou plus exactement les caractères, sont des nombres (de 0 à 255 en ascii étendu, de 0 à 127 en non-étendu). Par exemple, en ASCII, «A» (citation signifie caractère, par opposition à chaîne) est égal à 65. Ainsi, 1 + «A» vous donnerait 66 - «B». Vous pouvez donc prendre un nombre aléatoire de 0 à 26, l'ajouter au caractère "a", et vous voici: lettre aléatoire.
Vous pouvez également le faire avec une chaîne, en tapant "abcdefghijklmnopqrstuvwxyz" et en prenant une position aléatoire dans cette chaîne, mais la solution de Barker est plus élégante.
changer de version de @Michael Barker
Random r = new Random();
int c = r.nextInt(26) + (byte)'a';
System.out.println((char)c);
char randomLetter = (char) ('a' + Math.random() * ('z'-'a' + 1));
import static org.Apache.commons.lang3.RandomStringUtils.randomAlphabetic;
...
randomAlphabetic(1).toLowerCase()
cela vous donne une chaîne avec un seul caractère
Pour sélectionner au hasard une lettre de (a- z), je procéderais comme suit:
Random Rand = new Random();
...
char c = Rand.nextInt(26) + 'a';
Puisque Random.nextInt () génère une valeur comprise entre 0 et 25, il vous suffit d’ajouter un décalage de 'a' pour produire les lettres minuscules.
utilisez la valeur ascii des lettres pour générer le nombre aléatoire.
Random r = new Random();
char symbel = (char)(r.nextInt(26) + 'a');
if(symbel>='a' && symbel <= 'z') {
System.out.println("Small Letter" + symbel);
} else {
System.out.println("Not a letter" + symbel);
}