Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de taille tableau

    25 août 2016 à 18:53:23

    Bonjour, l'erreur est surement bête mais je ne trouve pas la solution... 

    import java.util.Scanner;
    import java.util.Arrays;
    
    public class Moyenne{
    	public static void main(String[] args){
    		System.out.println("Algorithme qui remplit un tableau de 20 entiers");
    
    		int[] tableau = new int[20];
    		double moyenne;
    		int somme=0;
    		Scanner sc = new Scanner(System.in);
    
    		// Remplissage du tableau
    		for(int i=0; i<=20; i++){
    			System.out.print("Entrez la valeurs "+i+" : ");
    			tableau[i] = sc.nextInt();
    		}
    
    		// Lecture du tableau
    		System.out.println("Voici les resultats :");
    		for(int j=0; j<tableau.length; j++){
    			System.out.print(tableau[j]+" ");
    			somme = tableau[j]+somme;
    		}
    
    		//Calcul de la moyenne
    		
    		moyenne = somme/20;
    		System.out.println();
    		System.out.println("La moyenne est de : "+ moyenne);
    	}
    }
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 20
            at Moyenne.main(Moyenne.java:16)

    Merci d'avance

    EDIT : Voici le correctif qui marche ... Sa m'embête un peu de faire démarrer un tableau à 0.

    Est il possible d'avoir un avis sur la propreté du code ? Faut il utiliser des méthodes ?

    import java.util.Scanner;
    import java.util.Arrays;
    
    public class Moyenne{
    	public static void main(String[] args){
    		System.out.println("Algorithme qui remplit un tableau de 20 entiers");
    
    		int[] tableau = new int[20];
    		double moyenne;
    		int somme=0;
    		Scanner sc = new Scanner(System.in);
    
    		// Remplissage du tableau
    		for(int i=0; i<20; i++){
    			System.out.print("Entrez la valeurs "+(i+1)+" : ");
    			tableau[i] = sc.nextInt();
    		}
    
    		// Lecture du tableau
    		System.out.println("Voici les resultats :");
    		for(int j=0; j<tableau.length; j++){
    			System.out.print(tableau[j]+" ");
    			somme = tableau[j]+somme;
    		}
    
    		//Calcul de la moyenne
    		
    		moyenne = somme/20;
    		System.out.println();
    		System.out.println("La moyenne est de : "+ moyenne);
    	}
    }




    -
    Edité par Linéaire 25 août 2016 à 18:58:47

    • Partager sur Facebook
    • Partager sur Twitter
      26 août 2016 à 9:03:06

      Tu déclare un tableau de taille 20 qui va donc de l'indice 0 à 19 hors dans ta boucle for tu va de l'indice 0 à 20 tu as donc un dépassement de taille.

      Après je vois que tu avait déjà trouvé.

      Pourquoi cela t'embete-t-il de commencer par l'indice 1 ?

      Sinon propreté du code je dirait découpe en fonction ton code et mets le 20 en variable.

      • Partager sur Facebook
      • Partager sur Twitter
        26 août 2016 à 19:48:46

        Bonjour,

        for(int i=0; i<=20; i++) {

        cela correspond à une boucle allant de 0 à 20 hors ton tableau va de 0 à 19

        donc:

        for(int i=0; i<20; i++) {

        ou

        for(int i=0; i<=19; i++) {

        Bonne Soirée

        -
        Edité par Tats'Yako 26 août 2016 à 19:50:54

        • Partager sur Facebook
        • Partager sur Twitter
        Un petit étudiant chinois perdu ^^'

        Problème de taille tableau

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown