J'ai crée un tableau d'objets recensant les 37 numéros de la roulette (0 à 36), j'ai donc crée une classe Numero pour indiquer toutes les caractéristiques des numéros. Dans la case 0 de mon tableau lesNumeros se trouve le numéro 0, case 1 il y a le numéro 1 etc.
Je génère un nombre aléatoire compris entre 0 et 36, puis je veux écrire dans un fichier toutes les caractéristiques de ce numéro pour les réutiliser plus tard. Voici mon code puis l'erreur affichée dans la console.
Code java : 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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 public class Principal { public static void main(String[] args) throws IOException { ArrayList<Numero> lesNumeros = new ArrayList<Numero>(37); lesNumeros.add(0, new Numero(0, "vert", "null", "null", 0, 0)); lesNumeros.add(1, new Numero(1, "rouge", "1-18", "impair", 1, 3)); lesNumeros.add(2, new Numero(2, "noir", "1-18", "pair", 1, 2)); lesNumeros.add(3, new Numero(3, "rouge", "1-18", "impair", 1, 1)); lesNumeros.add(4, new Numero(4, "noir", "1-18", "pair", 1, 3)); lesNumeros.add(5, new Numero(5, "rouge", "1-18", "impair", 1, 2)); lesNumeros.add(6, new Numero(6, "noir", "1-18", "pair", 1, 1)); lesNumeros.add(7, new Numero(7, "rouge", "1-18", "impair", 1, 3)); lesNumeros.add(8, new Numero(8, "noir", "1-18", "pair", 1, 2)); lesNumeros.add(9, new Numero(9, "rouge", "1-18", "impair", 1, 1)); lesNumeros.add(10, new Numero(10, "noir", "1-18", "pair", 1, 3)); lesNumeros.add(11, new Numero(11, "noir", "1-18", "impair", 1, 2)); lesNumeros.add(12, new Numero(12, "rouge", "1-18", "pair", 1, 1)); lesNumeros.add(13, new Numero(13, "noir", "1-18", "impair", 2, 3)); lesNumeros.add(14, new Numero(14, "rouge", "1-18", "pair", 2, 2)); lesNumeros.add(15, new Numero(15, "noir", "1-18", "impair", 2, 1)); lesNumeros.add(16, new Numero(16, "rouge", "1-18", "pair", 2, 3)); lesNumeros.add(17, new Numero(17, "noir", "1-18", "impair", 2, 2)); lesNumeros.add(18, new Numero(18, "rouge", "1-18", "pair", 2, 1)); lesNumeros.add(19, new Numero(19, "rouge", "19_36", "impair", 2, 3)); lesNumeros.add(20, new Numero(20, "noir", "19_36", "pair", 2, 2)); lesNumeros.add(21, new Numero(21, "rouge", "19_36", "impair", 2, 1)); lesNumeros.add(22, new Numero(22, "noir", "19_36", "pair", 2, 3)); lesNumeros.add(23, new Numero(23, "rouge", "19_36", "impair", 2, 2)); lesNumeros.add(24, new Numero(24, "noir", "19_36", "pair", 2, 1)); lesNumeros.add(25, new Numero(25, "rouge", "19_36", "impair", 3, 3)); lesNumeros.add(26, new Numero(26, "noir", "19_36", "pair", 3, 2)); lesNumeros.add(27, new Numero(27, "rouge", "19_36", "impair", 3, 1)); lesNumeros.add(28, new Numero(28, "noir", "19_36", "pair", 3, 3)); lesNumeros.add(29, new Numero(29, "noir", "19_36", "impair", 3, 2)); lesNumeros.add(30, new Numero(30, "rouge", "19_36", "pair", 3, 1)); lesNumeros.add(31, new Numero(31, "noir", "19_36", "impair", 3, 3)); lesNumeros.add(32, new Numero(32, "rouge", "19_36", "pair", 3, 2)); lesNumeros.add(33, new Numero(33, "noir", "19_36", "impair", 3, 1)); lesNumeros.add(34, new Numero(34, "rouge", "19_36", "pair", 3, 3)); lesNumeros.add(35, new Numero(35, "noir", "19_36", "impair", 3, 2)); lesNumeros.add(36, new Numero(36, "rouge", "19_36", "pair", 3, 1)); System.out.println("Combien de lancés souhaitez-vous ?\n"); Scanner sc = new Scanner(System.in); int nb_lancee = sc.nextInt(); sc.close(); for (int i = 0; i< nb_lancee ; i++) { int j = Fichier.NbAleatoire(); Fichier.Ecrire(j, "ug.txt"); j = -1; } } }
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class Fichier { static ArrayList<Numero> lesNumeros = new ArrayList<Numero>(37); public static int NbAleatoire() { int alea = (int)(Math.random()*36 + 1); return alea%37; } public static void Ecrire(int h, String nomf)throws IOException{ ObjectOutputStream write = new ObjectOutputStream(new FileOutputStream(nomf)); write.writeObject(lesNumeros.get(h)); write.close(); }
Code java : 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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 public class Numero implements Serializable{ private int nombre; private String couleur; private String grandPetit; private String pair; private int douzaine; private int ligne; public Numero(int nb, String coul, String gP, String pr, int douz, int lg) { this.nombre = nb; this.couleur = coul; this.grandPetit = gP; this.pair = pr; this.douzaine = douz; this.ligne = lg; } public int getNombre() { return nombre; } public void setNombre(int nombre) { this.nombre = nombre; } public String getCouleur() { return couleur; } public void setCouleur(String couleur) { this.couleur = couleur; } public String getGrandPetit() { return grandPetit; } public void setGrandPetit(String grandPetit) { this.grandPetit = grandPetit; } public String getPair() { return pair; } public void setPair(String pair) { this.pair = pair; } public int getDouzaine() { return douzaine; } public void setDouzaine(int douzaine) { this.douzaine = douzaine; } public int getLigne() { return ligne; } public void setLigne(int ligne) { this.ligne = ligne; } public void Afficher() { System.out.println("Numero [nombre=" + nombre + ", couleur=" + couleur + ", grandPetit=" + grandPetit + ", pair=" + pair + ", douzaine=" + douzaine + ", ligne=" + ligne + "]"); } }
Mais voilà l'exception :
Code Console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 22 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.get(ArrayList.java:459) at stats_roulette.Fichier.Ecrire(Fichier.java:56) at stats_roulette.Principal.main(Principal.java:86)
Voyez-vous d'ou peut venir le problème ? Merci d'avance
Partager