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

avec Java Discussion :

IndexOutOfBoundsException


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 1
    Par défaut IndexOutOfBoundsException
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Le contenu sous forme de code doit être posté entre balises [CODE] et non pas sous forme d'images !
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 486
    Billets dans le blog
    5
    Par défaut
    lesNumeros utilisé dans Fichier est la liste static (défini dans Fichier).C'est une ArrayList vide.

    Elle n'a rien à voir avec lesNumeros définie et visible dans la méthode main de Principale.

    Donc on demande l’élément h d'une liste vide, ce qui lève l’exception en question.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] Run-time error : '35600' Index out of bound
    Par neo2k2 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/03/2008, 16h23
  2. Réponses: 15
    Dernier message: 31/03/2007, 16h32
  3. index out of bound
    Par toure32 dans le forum Delphi
    Réponses: 1
    Dernier message: 07/11/2006, 15h51
  4. [Struts]Bean populate & array index out of bound
    Par djoukit dans le forum Struts 1
    Réponses: 7
    Dernier message: 02/11/2006, 11h03
  5. [Débutant]pb de fichier - array index out of bounds exception
    Par TheBlue dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 12/06/2006, 20h24

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