Erreur en JAVA

Résolu/Fermé
debutant11 Messages postés 3 Date d'inscription lundi 7 décembre 2015 Statut Membre Dernière intervention 7 décembre 2015 - 7 déc. 2015 à 18:05
debutant11 Messages postés 3 Date d'inscription lundi 7 décembre 2015 Statut Membre Dernière intervention 7 décembre 2015 - 7 déc. 2015 à 19:36
Bonjour,
j'ai un petit problème avec JAVA j'ai écris une petite fonction, lorsque je compile je n'ais pas d'erreurs mais quand je lance java me renvoie :
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at somme.sommeChiffre(somme.java:15)
at somme.main(somme.java:28)"

Je vous joind ma fonction ca aidera surement à trouver l'erreur, il y a des commentaires qui devrait vous faire comprendre ce qu'elle fait.
A voir également:

3 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
7 déc. 2015 à 18:52
Bonjour,

Ton code est décalé par rapport à l'exception, il n'y a rien ligne 28, du coup où est la ligne 15 qui pose problème ?

Remarque : il aurait été plus simple de copier-coller ton code plutôt que mettre une image, ça m'aurait permis de le tester, mais je ne vais pas tout recopier à la main...
0
debutant11 Messages postés 3 Date d'inscription lundi 7 décembre 2015 Statut Membre Dernière intervention 7 décembre 2015
Modifié par KX le 7/12/2015 à 19:13
Voila mon code :) , la ligne 15 c'est " valeur=resultat[i];"
ligne 26 "System.out.println( sommeChiffre( resultat ) );" ce sont les deux lignes que java me mets en erreur
Mais je ne vois pas ou ca coince justement , j'espere que vous pourrez m'aider. En tous cas merci d'avoir répondu
import java.io.*;
public class somme
 {
 
  static BufferedReader flux = new BufferedReader (new InputStreamReader (System.in));
               
  private static int [] sommeChiffre(int [] resultat) throws IOException
  {      int i;
   int valeur;
   int [] nombre= {0,0,0,0,0,0};
   
   for(i=0; i<5 ;i=i+1);
   {
    // recupère la valeur du tableau "resultat"
    valeur=resultat[i];
    //ajout de 1 dans le tableau "nombre" à la place du chiffre récupérer dans valeur
    nombre[valeur-1]=nombre[valeur-1]+1;
   }
   // obtention du tableau donnant le nombre de fois ou apparait un chiffre
   return(nombre);
  }
  public static void main (String[] args) throws IOException
  
  {
  int resultat[]= {2,2,2,6,5};
  System.out.println( sommeChiffre( resultat ) );
   
  }
 }
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
7 déc. 2015 à 19:22
Tu as mis un
;
après ta boucle
for(i=0; i<5 ;i=i+1)
c'est comme faire
{ }
donc ta boucle va faire 5 tours dans le vide avant de passer à la suite. Et à ce moment là, i sera égal à 5, donc resultat[5] plante c'est normal.

Enlèves le
;
ça devrait te débloquer.

Remarque : ça ne te serais pas arrivé si tu avais déclaré int i à l'intérieur de la boucle for. De manière générale il est mauvais de déclarer une variable avant d'avoir à s'en servir.

for (int i = 0; i < 5; i = i + 1) {
    // recupère la valeur du tableau "resultat"
    int valeur = resultat[i];
    // ajout de 1 dans le tableau "nombre" à la place du chiffre récupérer dans valeur
    nombre[valeur - 1] = nombre[valeur - 1] + 1;
}

Attention : afficher un tableau ne vas pas afficher son contenu, il faut l'afficher case par case, tu peux par exemple te servir de la méthode Arrays.toString :

import java.util.Arrays;

System.out.println(Arrays.toString(sommeChiffre(resultat)));
0
debutant11 Messages postés 3 Date d'inscription lundi 7 décembre 2015 Statut Membre Dernière intervention 7 décembre 2015
7 déc. 2015 à 19:36
il faut vraiment faire attention ... ce petit point virgule !! merci de m'avoir débloquée :)
D'accord pour la déclaration de variables je ne savais pas, on m'avait appris comme je l'ais fais , je prends en note vos conseils!
Je vous remercie beaucoup pour l'affichage du tableau ( effectivement sans cette méthode ça m'affichait quelque chose de bisarre "[I@126b249"... ) , ca marche très bien.
Cette fonction constitue le début d'un petit projet que je dois réaliser pour valider mon UE d'informatique, si j'ai d'autres problèmes je reviendrais c'est vraiment sympatique.
Encore merci KX
0