Problème: générateur de string alléatoire

EulaSky Messages postés 16 Date d'inscription lundi 22 mars 2004 Statut Membre Dernière intervention 4 juillet 2004 - 24 juin 2004 à 13:05
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 - 24 juin 2004 à 16:52
Hello tout le monde,
voici mon prog:
public class GenerateurString {

public static void main(String[] args) {
GenerateurString test = new GenerateurString();
System.out.println(test.generer(5));
}

// genere une string de longueur 'noLettre'
public String generer(int noLettre) {
Random rdm = new Random();
String resultat = new String();

// genere un char qui comprend seulement les voyelles bas de casse
for(int i=0; i<noLettre; i++)
resultat.concat("" + Character.forDigit(rdm.nextInt(122-97)+97,10));

return resultat;
}
}

Voila je veux générer une string de 'noLettre' en bas de casse, je génère mon numéro entre 97 et 122 (bas de casse en ascii notation décimal), et pis... rien, la string et vide et quand j'affiche un char à la fois il me fait voir des petits carrés (il reconnait pas ce char)! je comprend pas pk...
merci de l'aide

3 réponses

EulaSky Messages postés 16 Date d'inscription lundi 22 mars 2004 Statut Membre Dernière intervention 4 juillet 2004
24 juin 2004 à 13:44
mouais j'ai touvé que
char c = (char)entier;
fait une conversion implicite ascii... étrange mais ça marche

merci quand meme
0
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
24 juin 2004 à 13:44
peut etre que t'utilise les char et qu'il ne faut pas...
je ferais comme:

byte[] b=new byte[numLettre];
for (int i=0;i<numlettre;i++){
b[i]='A'+rand.nextInt(26);
}
return new String(b);
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
24 juin 2004 à 16:52
la méthode jorDigit de Character ne sert pas du tout à ca !!!
elle permet d'obtenir le caractère correspondant à un chiffre

Character.forDigit(8, 10) retourne le caractère '8'
de même que Character.forDigit(8, 16) par exemple
(mais pas Character.forDigit(8, 2) !)

ton Character.forDigit(rdm.nextInt(122-97)+97,10) retourne donc systematiquement (char) 0

on peut consrver des char sans passer au byte

public String generer(int noLettre) {
Random rdm = new Random();
String resultat = new String();

for(int i=0; i<noLettre; i++) {
int r = rdm.nextInt(122-97)+97;
resultat = resultat+((char) r);//ca n'a rien d'étrange! :big)
}
return resultat;
}

A+
Dobeliou
[Il ne faut jamais jouer à saute-mouton avec une licorne]
0