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