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

Collection et Stream Java Discussion :

erreur depassement de la taille du tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier Avatar de nypahe
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 85
    Points
    85
    Par défaut erreur depassement de la taille du tableau
    Bonjour
    comment gérer le dépassement du tableau avec l'erreur suivante;
    java.lang.ArrayIndexOutOfBoundsException
    je sais qu'il faut mettre les try() et cach().mais je sais pas comment y parvenir.

    Les instruction de dehors du while ne sont pas traité c'est à dire la boucle for pour afficher les éléments du tableau
    Merci d'avance.
    le code
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public static void main(String[] args){
    		 int n=9; //nombre de valeurs
    		 //int p = n;//nombre d'attribut
    		 double P[] = new double [n]; /* P contient les chaînes et les anti-chaînes*/
    		 int attribut = 1 ;/*compteur des attributs*/
    		 int nb_cas_possible = 1;/* Nombre de fois possible qu'attribut traité doit garder la même valeur*/
    		 int k = 1; // Nombre de point
    	     int aspect_traite = 0;
    		 double puiss = 0; // contient le resultat la fonction calculer
    			//double t[] = {1,2,4};
    		System.out.println("les elements de p sont: ");
     
     
    					while(k < n){
     
    							for(int i= 0; i<n; i++){ 
    							P[k]= i; 
    							k ++ ;
    							nb_cas_possible = nb_cas_possible *n; 
    							attribut = attribut+1;
    							aspect_traite = 1;
    							System.out.println("nombre d attribut= "+ attribut);
    							System.out.println("le nombre de cas traite: "+ nb_cas_possible);
    							}
    					}
     
    											for(int j=0; j< P.length; j++){
    						System.out.print("P["+j+"]= ");
    						System.out.print(P[j]  + " ");
    						System.out.println();
    						}

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Il faut d'abord améliorer l'algo pour ne pas dépasser la taille du tableau.
    Dans ton cas, tu initialises "k" à "1". Ensuite, tu fais "k++" n fois. A la dernière itération sur "n" dans la boucle "for", l'exception est levée :tu tentes d'accéder à P[k] mais k == n et P a possède seulement n éléments. Or les tableaux commencent à zéro...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    Voila avec le try catch tu peux reperer ton erreur. Mais comme dit plus haut à toi de faire un algo qui n'accede pas à une case qui n'existe pas.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public class Test {
    	public static void main(String[] args){
    		int n=9; //nombre de valeurs
    		//int p = n;//nombre d'attribut
    		double P[] = new double [n]; /* P contient les chaînes et les anti-chaînes*/
    		int attribut = 1 ;/*compteur des attributs*/
    		int nb_cas_possible = 1;/* Nombre de fois possible qu'attribut traité doit garder la même valeur*/
    		int k = 1; // Nombre de point
    		int aspect_traite = 0;
    		double puiss = 0; // contient le resultat la fonction calculer
    		//double t[] = {1,2,4};
    		System.out.println("les elements de p sont: ");
     
     
    		while(k < n){
     
    			for(int i= 0; i<n; i++){ 
    				try {
    				P[k]= i;
    				} catch (Exception e) {
    					System.err.println("Erreur k="+k+ " i=" + i);
    				}
    				k ++ ;
    				nb_cas_possible = nb_cas_possible *n; 
    				attribut = attribut+1;
    				aspect_traite = 1;
    				System.out.println("nombre d attribut= "+ attribut);
    				System.out.println("le nombre de cas traite: "+ nb_cas_possible);
    			}
    		}
     
    		for(int j=0; j< P.length; j++){
    			System.out.print("P["+j+"]= ");
    			System.out.print(P[j]  + " ");
    		}
    	}
     
    }

Discussions similaires

  1. Problème de taille de tableau
    Par Beush dans le forum C
    Réponses: 4
    Dernier message: 01/11/2005, 18h41
  2. [SGBD] [PHP/MySQL Query]Quelle est la taille du tableau retourné?
    Par Jean_Benoit dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 07/10/2005, 20h10
  3. Problème de taille de tableau
    Par k-nine dans le forum C
    Réponses: 6
    Dernier message: 25/09/2005, 10h16
  4. [VBA-E] taille du tableau non connu
    Par fab101 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 26/07/2005, 16h51
  5. static const et taille de tableau
    Par tut dans le forum C++
    Réponses: 3
    Dernier message: 27/01/2005, 17h01

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