Se connecter

Informatique

Programmation

Sujet : recuperation d'un element aleatoire
1
stalkyce98
Niveau 2
11 juillet 2018 à 14:24:42

Bonjour, bonsoir,

je suis en ce moment même en train de plancher sur un "compte est bon". Mais je bloque un peu. J'ai une liste de caractères en private et j'aimerais que les six boutons dans le jpNord, celui avec les nb1 à nb6, aille récupérer un des éléments, mais de manière aléatoire.

Enfin, j'aimerais que le premier JButton du second BorderLayout, celui avec tot, puisse calculer un Math.random compris entre 100 et 999, mais malheureusement, je ne trouves pas de techniques pour l'empecher de descendre en dessous de 100.

Alors voila, si quelqu'un à une solution ou une alternative, je suis preneur.

Merci d'avance à ceux qui voudront bien m'aider.


import javax.swing.*;
import java.awt.*;

public class Visuel extends JFrame{
    private static String[] plaquettes={"1","1","2","2","3","3","4","4","5","5","6","6","7","7","8","8","9","9","10","10","25","25","50","50","75","75","100","100"};
    public Visuel(){
        super("Visuel");
        JPanel jpFond = new JPanel();
        BorderLayout bl = new BorderLayout();
        jpFond.setLayout(bl);
        
        JPanel jpNord = new JPanel();
        jpNord.add(new JButton(nb1));
        jpNord.add(new JButton(nb2));
        jpNord.add(new JButton(nb3));
        jpNord.add(new JButton(nb4));
        jpNord.add(new JButton(nb5));
        jpNord.add(new JButton(nb6));
        jpFond.add(jpNord,BorderLayout.NORTH);
       
        
        JPanel jpOuest = new JPanel();
        jpOuest.setLayout(new GridLayout(4,1));
        jpOuest.add(new JButton(total));
        jpOuest.add(new JButton("+"));
        jpOuest.add(new JButton("-"));
        jpOuest.add(new JButton("/"));
        jpOuest.add(new JButton("x"));
        jpFond.add(jpOuest,BorderLayout.WEST);
        
        
        this.setContentPane(jpFond);
        this.pack();
        this.setVisible(true);
    }
}
godrik
Niveau 22
11 juillet 2018 à 16:03:32

rand()%800+100

PetyrLeBelge
Niveau 26
12 juillet 2018 à 20:05:52

Bah tu fais entre 0 et 899 et puis tu ajoutes 100 au résultat...
De cette façon la plus petite valeur que tu peux avoir sera 100 et la plus grande 999

PetyrLeBelge
Niveau 26
12 juillet 2018 à 20:07:13

Après je comprends pas ce qu'il y'a dans ton String[] plaquettes...

stalkyce98
Niveau 2
15 juillet 2018 à 12:20:42

Alors voila, j'ai un léger problème. J'ai trouvé une explication en cherchant un peu, sauf que je tombe sur ça. Et je ne vois pas comment régler le souci

https://www.noelshack.com/2018-28-7-1531650038-sans-titre.png

stalkyce98
Niveau 2
15 juillet 2018 à 12:22:32

Le 12 juillet 2018 à 20:07:13 PetyrLeBelge a écrit :
Après je comprends pas ce qu'il y'a dans ton String[] plaquettes...

En lisant les règles, j'ai vu que le jeu était en fait constitué de Plaquettes et que les chiffres dans cette chaîne sont les seuls qui peuvent apparaître. Et je cherche un moyen d'en choisir six de façon aléatoire afin de les mettres dans les boutons ou il y a les "NB"

stacksmashing
Niveau 6
15 juillet 2018 à 12:34:17

Alors voila, j'ai un léger problème. J'ai trouvé une explication en cherchant un peu, sauf que je tombe sur ça. Et je ne vois pas comment régler le souci

Total est un entier, JButton() prends une string en paramètre

stalkyce98
Niveau 2
15 juillet 2018 à 13:16:49

Le 15 juillet 2018 à 12:34:17 stacksmashing a écrit :

Alors voila, j'ai un léger problème. J'ai trouvé une explication en cherchant un peu, sauf que je tombe sur ça. Et je ne vois pas comment régler le souci

Total est un entier, JButton() prends une string en paramètre

Il y a moyen de passer le JButton en Int ou je dois m'arranger pour que Total devienne un String ?

stacksmashing
Niveau 6
15 juillet 2018 à 13:22:19

Tu peux faire les deux:
-surcharger le constructeur de JButton pour lui donner à manger un int
-convertir le int en string : new JButton(String.valueOf(Total))

stalkyce98
Niveau 2
15 juillet 2018 à 14:42:51

Le 15 juillet 2018 à 13:22:19 stacksmashing a écrit :
Tu peux faire les deux:
-surcharger le constructeur de JButton pour lui donner à manger un int
-convertir le int en string : new JButton(String.valueOf(Total))

Merci, ça fonctionne parfaitement.
Maintenant, si tu sais comment on fait pour choisir six elements aleatoires de la chaine "plaquettes", ça me permettra de passer à la suite

stalkyce98
Niveau 2
16 juillet 2018 à 15:56:17

C'est bon, j'ai trouvé un moyen via nextInt, malheureusement, cela bloque tout de même.

j'ai rajouté : "private static String nb1 = plaquettes[Random.nextInt(plaquettes.length)];" mais il m'indique avec nextInt "non static method nextInt(int) cannot be referenced from a static context"

Quelqu'un sait d'où vient le problème ?

Matraxylophone
Niveau 7
17 juillet 2018 à 14:17:42

Random n'est pas utilisable de manière static, tu dois instancier un object Random pour avoir la methode nextInt() :

Random random = new Random();
int nombreAleatoire = random.nextInt(plaquettes.lenght)

stalkyce98
Niveau 2
18 juillet 2018 à 15:08:13

ça fonctionne. Mais problème, il me sort parfois des chiffres qui ne font pas partie de plaquettes.

pourtant, j'utilise bien plaquettes.length

Pseudo supprimé
Niveau 10
18 juillet 2018 à 15:43:05

nextInt retourne un indice de ton tableau plaquette j'imagine, donc la valeur que tu veux est dans plaquettes[nombreAleatoire]

1
Sujet : recuperation d'un element aleatoire
   Retour haut de page
Consulter la version web de cette page