web-dev-qa-db-fra.com

En Java, comment sélectionnez-vous au hasard une lettre (a-z)?

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?

14
Random r = new Random();
char c = (char) (r.nextInt(26) + 'a');
23
Michael Barker

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.

4
Raveline

changer de version de @Michael Barker

    Random r = new Random();
    int c = r.nextInt(26) + (byte)'a';
    System.out.println((char)c);
3
Nishant
char randomLetter = (char) ('a' + Math.random() * ('z'-'a' + 1));
2
Joon Lee
import static org.Apache.commons.lang3.RandomStringUtils.randomAlphabetic;
...
randomAlphabetic(1).toLowerCase()

cela vous donne une chaîne avec un seul caractère

1
piotrek

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.

1
Davian Hurmal

utilisez la valeur ascii des lettres pour générer le nombre aléatoire.

0
stinepike
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);
}
0
Mubashir ahmad