IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Débutant(e)] 1 String au hazard parmi 1 String[]


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Par défaut [Débutant(e)] 1 String au hazard parmi 1 String[]
    Bonjour,

    Je cherche un moyen de récupérer aléatoirement une chaîne de caractère, parmi une liste de chaînes de caractères, comme dans l'exemple suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final String[] myValueList = { "alpha", "beta", ... };
    Je peux vous dire le but, mais bon, ça avancera pas à grand chose :o

    Alors voilà, si une âme bienveillante sait comment faire ça svp

    Merci !

    [ Modéré par Bulbo ]
    Ajout d'un tag dans le titre
    Les Règles du Forum

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Bonjour,

    C'est assez simple, tu récupères la taille de ta liste, tu cherche un nombre aléatoire entre 0 et (taille-1), puis tu récupères la chaine pointée par cet index.

    Ca devrait t'aider, utilises Math.random().

  3. #3
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Pas mieux !

  4. #4
    Membre confirmé Avatar de delas
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Par défaut
    j'ai fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		String[] tips = {"Cliquez sur les croix(+) de l'arbre pour le déplier",
    											"Vous pouvez cliquer sur le logo \"TECHNOLOGY SERVICE\" pour faire une nouvelle recherche",
    											"Lors de la recherche, la case \"Chaîne de recherche\" sert a faire une recherche sur le nom des personnes et le nom des comptes",
    											"Les champs sur fond grisés sont des champs non modifiables",
    											"Dans la liste des adresses, celles qui sont grisées ne sont pas utilisées pour ce compte",
    											"Pour écrire un e-mail a un client, cliquez sur le lien \"écrire\" dans la liste des e-mails.<br>Nous devez avoir votre lotus notes ouvert.",
    											"Cliquez sur un compte pour l'éditer"
    											 };
     
    		Random r = new Random();
    		double nr = r.nextDouble();
    		long num = Long.parseLong(String.valueOf(tips.length - 1));
    		num = Math.round(nr * num); 
    		Integer i = new Integer(String.valueOf(num));
     
    		request.setAttribute("tip",tips[i.intValue()]);
    et en plus, ca marche

  5. #5
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Citation Envoyé par delas
    j'ai fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		String[] tips = {"Cliquez sur les croix(+) de l'arbre pour le déplier",
    											"Vous pouvez cliquer sur le logo \"TECHNOLOGY SERVICE\" pour faire une nouvelle recherche",
    											"Lors de la recherche, la case \"Chaîne de recherche\" sert a faire une recherche sur le nom des personnes et le nom des comptes",
    											"Les champs sur fond grisés sont des champs non modifiables",
    											"Dans la liste des adresses, celles qui sont grisées ne sont pas utilisées pour ce compte",
    											"Pour écrire un e-mail a un client, cliquez sur le lien \"écrire\" dans la liste des e-mails.<br>Nous devez avoir votre lotus notes ouvert.",
    											"Cliquez sur un compte pour l'éditer"
    											 };
     
    		Random r = new Random();
    		double nr = r.nextDouble();
    		long num = Long.parseLong(String.valueOf(tips.length - 1));
    		num = Math.round(nr * num); 
    		Integer i = new Integer(String.valueOf(num));
     
    		request.setAttribute("tip",tips[i.intValue()]);
    et en plus, ca marche
    ça marche ok mais je trouve que tu te compliques bien la vie.

    On peut se simplifier la vie en codant ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Random r = new Random();
    int tipNr = r.getInt(tips.length); 
    request.setAttribute("tip",tips[tipNr]);

  6. #6
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Par défaut
    mmm, je vois pas où tu as trouvé cette fonction getInt pour la classe Random...

    moi j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String[] table = {...};
    Random r = new Random();
    int randomValue = r.nextInt(table.length);	
    String toReturn  = table[randomValue];
    ça fonctionne bien

  7. #7
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Citation Envoyé par javaSudOuest
    mmm, je vois pas où tu as trouvé cette fonction getInt pour la classe Random...

    moi j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String[] table = {...};
    Random r = new Random();
    int randomValue = r.nextInt(table.length);	
    String toReturn  = table[randomValue];
    ça fonctionne bien
    Tu as raison. C'est bien la méthode nextInt()

  8. #8
    Membre confirmé Avatar de delas
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Par défaut
    shame on me.. c'est vrai que ma methode est un peu capilotracté...

    pour me ratraper, je propose cette methode qui consiste a mettre la le tableau de String dans une List maList et de faire un
    Collection.Shuffle(maList), ce qui melange les elements de la list.

    ensuite, un maList.elementAt(0) recupere donc un element au hasard....

  9. #9
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Que pensez-vous de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public static final String[] myValueList = { "alpha", "beta", ... };
    String uneStringRandom = myValueList[ Integer.parseInt( (myValueList.length+1)*Math.random() ) ];

  10. #10
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Pourquoi tu fais un Integer.parseInt() ?

Discussions similaires

  1. [String] trouver caractère dans un string
    Par mariemor64 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/05/2006, 17h14
  2. Réponses: 3
    Dernier message: 23/02/2006, 09h37
  3. [débutant]obtenir un unsigned char en tant que String
    Par NorthernLights dans le forum C++
    Réponses: 2
    Dernier message: 03/02/2006, 10h30
  4. Réponses: 15
    Dernier message: 16/11/2005, 16h25
  5. [Débutant(e)]Instancier une classe connaissant son nom (String)
    Par Invité dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 17/06/2005, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo