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 :

Mon tableau a plus d'éléments


Sujet :

Collection et Stream Java

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut Mon tableau a plus d'éléments
    après avoir exécuté mon prg, que j'ai constaté il ya plusieurs fois
    cette ligne suivante :
    "L’addition de chaque élément de ces 2 tableaux sont: 0+0 = 0"
    quelqu'un peut aider svp
    voilà mon prg:
    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
     
    import java.util.Scanner;
    public class Divers 
    { 
       public static void main(String[]args)
       {
           int tab1[]=new int [100];
           int tab2[]=new int [100];
           int[] tab3={};   
           Scanner sc=new Scanner(System.in);
           System.out.println("Entrez le nb d'éléments de 1er tableau:");
           int n=sc.nextInt();
           for(int i=0;i<n;i++)
           {
            System.out.println("Entrez l'élément n°"+(i+1)+"" +" du tableau:"); 
            tab1[i]=sc.nextInt();
           }
           System.out.println("Entrez le nb d'éléments de 2eme tableau");
           int m=sc.nextInt();
           for(int i=0;i<m;i++)
           {
            System.out.println("Entrez l'élément n°"+(i+1)+" du tableau:"); 
            tab2[i]=sc.nextInt();
           }
         int somme=0;
         for(int i=0;i<tab1.length;i++)
         {
          for(int j=0; j<tab2.length;j++) 
          {
            somme=tab1[i]+tab2[i]; 
          }
          System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+somme);
         }
           }
     }
    voilà mon output:
    Entrez le nb d'éléments de 1er tableau:
    3
    Entrez l'élément n°1 du tableau:
    4
    Entrez l'élément n°2 du tableau:
    5
    Entrez l'élément n°3 du tableau:
    6
    Entrez le nb d'éléments de 2eme tableau
    3
    Entrez l'élément n°1 du tableau:
    7
    Entrez l'élément n°2 du tableau:
    8
    Entrez l'élément n°3 du tableau:
    9
    L'addtion de chaque élément de ces 2 tableaux sont: 4+7 = 11
    L'addtion de chaque élément de ces 2 tableaux sont: 5+8 = 13
    L'addtion de chaque élément de ces 2 tableaux sont: 6+9 = 15
    L'addtion de chaque élément de ces 2 tableaux sont: 0+0 = 0
    ..................................................................................
    .................................................................................
    L'addtion de chaque élément de ces 2 tableaux sont: 0+0 = 0

  2. #2
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Reprenons la fin formatée correctement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		int somme = 0;
    		for (int i = 0; i < tab1.length; i++) {
    			for (int j = 0; j < tab2.length; j++) {
    				somme = tab1[i] + tab2[i];
    			}
    			System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "
    							+ tab1[i] + "+" + tab2[i] + " = " + somme);
    		}
    En gros, on fait

    On rentre dans le premier for et pour chaque élément dans le tableau tab1
    i vaut 0
    on rentre dans la boucle et on calcule le nombre de fois qu'il y a d'éléments dans tab2 la somme de tab1[0] + tab2[0] (??? Je pense qu'il y a une première boulette ici)
    on affiche le résultat
    i++ et on recommence

    Ok... Sauf que au début, tu as ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		int tab1[] = new int[100];
    		int tab2[] = new int[100];
    Tu vas donc toujours afficher 100 lignes ! (puisque la "taille" de tab1 fait 100)

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    comme vous avez dit j'ai corrigé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int tab1[]=new int [5];
    int tab2[]=new int [5];
    int[] tab3={};
    j'ai 3 éléments supplémentaire vide,
    L'addtion de chaque élément de ces 2 tableaux sont: 3+7 = 10
    L'addtion de chaque élément de ces 2 tableaux sont: 4+8 = 12
    L'addtion de chaque élément de ces 2 tableaux sont: 0+0 = 0
    L'addtion de chaque élément de ces 2 tableaux sont: 0+0 = 0
    L'addtion de chaque élément de ces 2 tableaux sont: 0+0 = 0
    je veux éviter les éléments vide, je veux garder seulement éléments remplis,
    aidez moi svp.

  4. #4
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Normal d'avoir 5 lignes vu qu'à la base tu déclares un tableau qui possède 5 éléments.

    Quand tu déclares un tableau, toutes les valeurs du tableau sont initialisées avec la valeur par défaut de la variable. Dans ton cas, un int tab[] = new int[5] correspond EXACTEMENT à écrire int tab[] = {0,0,0,0,0};
    En gros, tu as déjà un tableau rempli avec 5 éléments.

    Si tu veux pouvoir "jouer" avec un tableau à taille variable, tu ne pourras pas utiliser la notation [] qui impose de connaitre la taille du tableau initial. Enfin, pas comme tu le fais...

    Dans ton algo, commence par saisir le nombre l'éléments que tu veux dans ton premier tableau, stocke le dans une variable... Disons la variable "tailleTableau1"... Et ensuite, défini ton tableau d'entiers comme ceci :
    int tab1[] = new int[tailleTableau1];

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    Dans ton algo, commence par saisir le nombre l'éléments que tu veux dans ton premier tableau, stocke le dans une variable... Disons la variable "tailleTableau1"... Et ensuite, défini ton tableau d'entiers comme ceci :
    int tab1[] = new int[tailleTableau1];
    dans mon cas, ce l'utilisateur décide le nombre éléments qu'il veut rentré,regardez mon code svp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     Scanner sc=new Scanner(System.in);
    	      System.out.println("Entrez le nb d'éléments de 1er tableau :");
    	      int n=sc.nextInt();
    	      for(int i=0;i<n;i++)
    	      {
    	    	  System.out.println("Entrez l'élément n°"+(i+1)+"" +" du tableau:"); 
    	    	  tab1[i]=sc.nextInt();
    	      }

  6. #6
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Oui, j'ai bien vu que c'est l'utilisateur qui décide du nombre d'éléments...

    Mais regardons à nouveau le début du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		int tab1[] = new int[5]; // définition de la taille du tableau 1
    		int tab2[] = new int[5];// définition de la taille du tableau 2
    		int[] tab3 = {};
    		Scanner sc = new Scanner(System.in);// définition du scanner
    		System.out.println("Entrez le nb d'éléments de 1er tableau:");
    		int n = sc.nextInt(); // récupération du nombre d'éléments du tableau
    		for (int i = 0; i < n; i++) { // début de la saisie des éléments
    		...
    Et si... on ne définissait les tableaux tab1 et tab2 qu'APRES que l'utilisateur ait saisi le nombre d'éléments du tableau? Juste avant qu'on ne commence à le remplir... En donnant comme taille des tableau la taille que l'utilisateur a saisi dans la variable n;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    		int[] tab3 = {};
    		Scanner sc = new Scanner(System.in);// définition du scanner
    		System.out.println("Entrez le nb d'éléments de 1er tableau:");
    		int n = sc.nextInt(); // récupération du nombre d'éléments du tableau
     
    		// faire la définition des tableaux ici avec la bonne taille
     
    		for (int i = 0; i < n; i++) { // début de la saisie des éléments
    		...

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    merci pour votre aide
    vous voulez que je fasse comme ceci n'est ce 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
     
    int[] tab3={};   
    	       Scanner sc=new Scanner(System.in);
    	       System.out.println("Entrez le nb d'éléments de 1er tableau:");
    	       int n=sc.nextInt();
    	       int tab1[]=new int [n];
    	       for(int i=0;i<n;i++)
    	       {
    	        System.out.println("Entrez l'élément n°"+(i+1)+"" +" du tableau:"); 
    	        tab1[i]=sc.nextInt();
    	       }
    	       System.out.println("Entrez le nb d'éléments de 2eme tableau");
    	       int m=sc.nextInt();
    	       int tab2[]=new int [m];
    	       for(int i=0;i<m;i++)
    	       {
    	        System.out.println("Entrez l'élément n°"+(i+1)+" du tableau:"); 
    	        tab2[i]=sc.nextInt();
    	       }

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    ça marche, merci beaucoup

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    j'ai encore un question
    comment mettre la valeur de somme dans le tab3?
    j'ai essayé comme suivant mais lors de la compilation j'ai une erreur:

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    tab3 cannot be resolved to a variable

    at Divers.main(Divers.java:32)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int i=0;i<tab1.length;i++)
    			     {
    			      for(int j=0; j<tab2.length;j++) 
    			      {
    			        somme=tab1[i]+tab2[i];
    			        int tab3[]=new int [somme]; 
    			      }
    			      System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[somme]);

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    j'ai essayé comme ceci mon prg marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        int tab3[]=new int [m];
    			     for(int i=0;i<tab1.length;i++)
    			     {
    			      for(int j=0; j<tab2.length;j++) 
    			      {
     
    			    	  tab3[i]=tab1[i]+tab2[i];
     
    			      }
    			      System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
    			     }
    			       }
    			 }
    mais en tant que l'utilisateur rentre la même taille dans les deux tableaux
    mon prg marchera bien, dès que l'utilisateur rentre différent valeur à chaque tableaux, il y aura un pb, comment je l'ai resoud ce pb
    merci d'avance

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Elle sert à quoi la boucle sur j : tu n'utilises même pas cette variable ! Avec ton code, tu calcules m fois la même somme.
    Autant faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        int tab3[]=new int [m];
        for(int i=0;i<tab1.length;i++) {
             tab3[i]=tab1[i]+tab2[i];
    	 System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
        }


    Citation Envoyé par domxaline Voir le message
    mais en tant que l'utilisateur rentre la même taille dans les deux tableaux
    Autant ne demander qu'un seul nombre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    System.out.println("Entrez le nb d'éléments des 2 tableaux :");
    int n=sc.nextInt();
    int tab1[]=new int [n];
    int tab2[]=new int [n];
    Sinon, s'il faut pouvoir gérer quand même 2 tableaux de taille différente, tu peux faire que tab3 ait pour taille la valeur la plus petite entre n et m :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        int tab3[]=new int [Math.min(n,m)];
        for(int i=0;i<tab3.length;i++) {
             tab3[i]=tab1[i]+tab2[i];
    	 System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
        }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    si je fais comme vous dites:
    int tab3[]=new int [Math.min(n, m)];
    for(int i=0;i<tab3.length;i++)
    {
    tab3[i]=tab1[i]+tab2[i];
    System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
    }
    mon résultat est toujours
    Entrez le nb d'éléments de 1er tableau:
    3
    Entrez l'élément n°1 du tableau:
    4
    Entrez l'élément n°2 du tableau:
    5
    Entrez l'élément n°3 du tableau:
    6
    Entrez le nb d'éléments de 2eme tableau
    7
    Entrez l'élément n°1 du tableau:
    2
    Entrez l'élément n°2 du tableau:
    5
    Entrez l'élément n°3 du tableau:
    6
    Entrez l'élément n°4 du tableau:
    7
    Entrez l'élément n°5 du tableau:
    8
    Entrez l'élément n°6 du tableau:
    9
    Entrez l'élément n°7 du tableau:
    45
    L'addtion de chaque élément de ces 2 tableaux sont: 4+2 = 6
    L'addtion de chaque élément de ces 2 tableaux sont: 5+5 = 10
    L'addtion de chaque élément de ces 2 tableaux sont: 6+6 = 12

    il prend compte que 3 éléments, mais deuxième tableau contient 7 élément!!!

  13. #13
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    En fait, il te conseille de prendre la taille la plus petite pour une raison toute simple : si ton premier tableau ne fait qu'une taille de 3 et que tu essayes d'accéder à tab1[4], tu vas avoir une grosse erreur moche.

    Si tu veux être sûr de pouvoir faire la somme des éléments du plus grand tableau, tu dois changer ton algorithme sous cette forme
    - saisir le nombre d'éléments du tableau 1 (n)
    - saisir le nombre d'éléments du tableau 2 (m)
    - initialiser les deux tableaux avec la plus grande valeur de taille entre n et m (que tu mets dans la variable p)
    - saisir les n premiers éléments du tableau 1
    - saisir les m premiers éléments du tableau 2
    - faire une boucle p fois pour calculer la somme de tab1[i] + tab2[i]

  14. #14
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    merci beaucoup

  15. #15
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    je récris mon prg ainsi,
    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
     
    import java.util.Scanner;
    public class Testing 
    {	
    	public static void main(String[] args) 
    	{
    		Scanner sc=new Scanner(System.in);
    	    System.out.println("**Entrez le nb d'éléments (<=8)  1er tableau:***:");
    	    int m=sc.nextInt();
    	           int tab1[]=new int [8]; //utilisateur décide lui même nb d’élément à mettre
    		       for(int i=0;i<m;i++)
    		       {
    		        System.out.println("Entrez l'élément n°"+(i+1)+"" +" du tableau:"); 
    		        tab1[i]=sc.nextInt();
    		       }
    		       System.out.println("**Entrez le nb d'éléments (<=8) 2eme tableau:**");
    		       int n=sc.nextInt();
    		       int tab2[]=new int [8]; //utilisateur décide lui même nb d’élément à mettre
    		       for(int i=0;i<m;i++)
    		       {
    		        System.out.println("Entrez l'élément n°"+(i+1)+" du tableau:"); 
    		        tab2[i]=sc.nextInt();
    		       }
    		       int tab3[]=new int [Math.max(n, m)];
    		       //int tab3[]=new int[(m)];
    		       for(int i=0;i<tab3.length;i++)
    		       {
    		    	   tab3[i]=tab1[i]+tab2[i];
    		    	   System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
    		       }
    		    }
    		 }
    mais le résultat est bizarre, deuxième tableau n 'a pris en compte les éléments 3 et 4
    output
    **Entrez le nb d'éléments (<=8) 1er tableau:***:
    2
    Entrez l'élément n°1 du tableau:
    1
    Entrez l'élément n°2 du tableau:
    3
    **Entrez le nb d'éléments (<=8) 2eme tableau:**
    4
    Entrez l'élément n°1 du tableau:
    2
    Entrez l'élément n°2 du tableau:
    3
    L'addtion de chaque élément de ces 2 tableaux sont: 1+2 = 3
    L'addtion de chaque élément de ces 2 tableaux sont: 3+3 = 6
    L'addtion de chaque élément de ces 2 tableaux sont: 0+0 = 0
    L'addtion de chaque élément de ces 2 tableaux sont: 0+0 = 0

  16. #16
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Normal, tu as un petit bug ^^

    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
    import java.util.Scanner;
    public class Testing 
    {	
    	public static void main(String[] args) 
    	{
    		Scanner sc=new Scanner(System.in);
    	    System.out.println("**Entrez le nb d'éléments (<=8)  1er tableau:***:");
    	    int m=sc.nextInt();
    	           int tab1[]=new int [8]; //utilisateur décide lui même nb d’élément à mettre
    		       for(int i=0;i<m;i++)
    		       {
    		        System.out.println("Entrez l'élément n°"+(i+1)+"" +" du tableau:"); 
    		        tab1[i]=sc.nextInt();
    		       }
    		       System.out.println("**Entrez le nb d'éléments (<=8) 2eme tableau:**");
    		       int n=sc.nextInt();
    		       int tab2[]=new int [8]; //utilisateur décide lui même nb d’élément à mettre
    		       for(int i=0;i<m;i++)
    		       {
    		        System.out.println("Entrez l'élément n°"+(i+1)+" du tableau:"); 
    		        tab2[i]=sc.nextInt();
    		       }
    		       int tab3[]=new int [Math.max(n, m)];
    		       //int tab3[]=new int[(m)];
    		       for(int i=0;i<tab3.length;i++)
    		       {
    		    	   tab3[i]=tab1[i]+tab2[i];
    		    	   System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
    		       }
    		    }
    		 }
    Tu itères pas sur le bon nombre

    Par contre, tu as pas fait ce que j'ai dit, à savoir laisser l'utilisateur choisir complètement la taille du tableau !

    Fait comme ça !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     int m=sc.nextInt();
     int tab1[]=new int [m]; //utilisateur décide lui même nb d’élément à mettre

  17. #17
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    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
    import java.util.Scanner;
    public class Testing 
    {	
    	public static void main(String[] args) 
    	{
    		Scanner sc=new Scanner(System.in);
    	    System.out.println("**Entrez le nb d'éléments (<=8)  1er tableau:***:");
    	    int m=sc.nextInt();
    	           int tab1[]=new int [m]; //utilisateur décide lui même nb d’élément à mettre
    		       for(int i=0;i<m;i++)
    		       {
    		        System.out.println("Entrez l'élément n°"+(i+1)+"" +" du tableau:"); 
    		        tab1[i]=sc.nextInt();
    		       }
    		       System.out.println("**Entrez le nb d'éléments (<=8) 2eme tableau:**");
    		       int n=sc.nextInt();
    		       int tab2[]=new int [n]; //utilisateur décide lui même nb d’élément à mettre
    		       for(int i=0;i<n;i++)
    		       {
    		        System.out.println("Entrez l'élément n°"+(i+1)+" du tableau:"); 
    		        tab2[i]=sc.nextInt();
    		       }
    		       int tab3[]=new int [Math.max(m,n)];
    		       for(int i=0;i<tab3.length;i++)
    		       {
    		    	   tab3[i]=tab1[i]+tab2[i];
    		    	   System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
    		       }
    		    }
    		 }
    output
    **Entrez le nb d'éléments (<=8) 1er tableau:***:
    3
    Entrez l'élément n°1 du tableau:
    2
    Entrez l'élément n°2 du tableau:
    5
    Entrez l'élément n°3 du tableau:
    6
    **Entrez le nb d'éléments (<=8) 2eme tableau:**
    2
    Entrez l'élément n°1 du tableau:
    4
    Entrez l'élément n°2 du tableau:
    5
    L'addtion de chaque élément de ces 2 tableaux sont: 2+4 = 6
    L'addtion de chaque élément de ces 2 tableaux sont: 5+5 = 10

    j'ai une erreur message:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    at Testing.main(Testing.java:27)

  18. #18
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Reprends le message que j'ai mis plus haut :
    Si tu veux être sûr de pouvoir faire la somme des éléments du plus grand tableau, tu dois changer ton algorithme sous cette forme
    - saisir le nombre d'éléments du tableau 1 (n)
    - saisir le nombre d'éléments du tableau 2 (m)
    - initialiser les deux tableaux avec la plus grande valeur de taille entre n et m (que tu mets dans la variable p)
    - saisir les valeurs du tableau 1
    ...
    Tes tableaux doivent avoir la même taille et doivent avoir les deux la taille du plus grand, sinon tu va forcement tomber sur cette erreur.

  19. #19
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    saisir le nombre d'éléments du tableau 1 (n)
    System.out.println("**Entrez le nb d'éléments (<=8) 2eme tableau:**");
    int n=sc.nextInt();
    int tab2[]=new int [n]; //utilisateur décide lui même nb d’élément à mettre

    saisir le nombre d'éléments du tableau 2 (m)
    System.out.println("**Entrez le nb d'éléments (<=8) 2eme tableau:**");
    int m=sc.nextInt();
    int tab2[]=new int [m]; //utilisateur décide lui même nb d’élément à mettre

    initialiser les deux tableaux avec la plus grande valeur de taille entre n et m (que tu mets dans la variable p)
    saisir les valeurs du tableau 1
    mais ceci je ne comprend pas bien veuillez m'expliquez svp

  20. #20
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par domxaline Voir le message

    initialiser les deux tableaux avec la plus grande valeur de taille entre n et m (que tu mets dans la variable p)
    saisir les valeurs du tableau 1
    mais ceci je ne comprend pas bien veuillez m'expliquez svp
    1. initialiser les deux tableaux avec la plus grande valeur de taille entre n et m (que tu mets dans la variable p)

      On te dit de dimensionner les 2 tableaux avec la même taille, ceci afin de pouvoir faire la somme 2 à 2 de chaque éléments. Si tu as un tableau de 10 élements et un tableau de 20, tu peux faire la somme des 10 premiers du premier tableau avec les 10 premier du second tableau, d'accord ? Mais les 10 suivant dans le deuxième tableau, tu peux pas en faire la somme avec ceux du tableau 1, puisqu'ils n'existent pas.

      C'est pour ça que je te proposais de faire la somme que des premiers, en commun aux 2 tableaux. @Eulbobo te propose de faire que les 2 tableaux aient la même taille (afin de pouvoir faire la somme de tous les éléments), mais de ne remplir que le nombre de valeurs nécessaires, celles qu'a indiquées l'utilisateur.

      Si l'utilisateur dit je veux un tableau de 10 et un tableau de 20, et qu'on fait 2 tableaux de 20, mais qu'on demande à l'utilisateur de saisir 10 valeurs dans le premier tableau et 20 valeurs dans le second, il aura exactement ce qu'il demande (il ne saura même pas que le programme utilise un tableau plus grand que nécessaire). Mais le programme pourra en faire la somme 2 à 2 sans planter, puisque les 2 tableaux auront la même taille.

      Si on entre 10 valeurs dans un tableau de taille 20, quid des 10 autres valeurs qu'on remplit pas avec une valeur saisie ? Elles valent toutes 0 : par défaut, un tableau contient que des zéros. Quand on fera la somme de la case 11, du tableau où il y a 10 valeurs saisies, avec la case 11 du tableau où il y en a 20, on ajoutera 0 à la valeur qu'il y a dans le tableau de 20. 0 + n étant égale n, ça reste plus ou moins cohérent (quoique personnellement, la somme de quelque chose avec rien ça n'existe pas, d'où ma solution avec le plus petit des 2 tableaux).

      Donc, pour résumer on te dit de donner la taille du plus grand des 2 tableaux saisis au tableau résultat, c'est-à-dire le plus grand entre n et m, et on te dit de le stocker dans la variable p.

      Pour connaitre le plus grand entre 2 entiers (n et m), il y a différents moyens. L'un d'eux est d'utiliser la méthode Math.max(), ce qu'utilise @eulbobo dans son exemple, ici :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int tab3[]=new int [Math.max(m,n)];
      bon il utilise pas de variable p, ici, mais c'est un détail ! Il y a toutefois un petit défaut dans cette méthode : il te faut demander toutes les tailles de tous les tableaux d'abord, avant de demander les valeurs pour les remplir, parce que pour calculer le max d'une liste de valeurs (même pour une liste de 2 valeurs), il faut toutes les connaitre (on pourrait compliquer le programme, en faisant des copies de tableau au besoin au fur et à mesure de la saisie de chaque taille, mais c'est une autre histoire, et déjà fait celui-là comme ça). Donc il faut juste que tu notes que tu ne peux pas faire :

      1. demander la taille du premier tableau,
      2. créer le premier tableau
      3. saisir les valeurs du premier,
      4. demander la taille du second,
      5. créer le second tableau
      6. saisir les valeurs du second,



      mais

      1. demander la taille du premier tableau,
      2. demander la taille du second,
      3. calculer la taille la plus grande entre les 2
      4. créer le premier tableau
      5. saisir les valeurs du premier,
      6. créer le second tableau
      7. saisir les valeurs du second,

    2. saisir les valeurs du tableau 1

      Je suppose que ça, tu l'as copié en trop dans ton message, et que tu sais ce que ça veut dire...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. plus grand élément dans un tableau
    Par shaku dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 09/04/2009, 20h28
  2. Réponses: 13
    Dernier message: 07/01/2007, 19h43
  3. Trouver le Kième plus petit élément d'un tableau
    Par katrena99 dans le forum Pascal
    Réponses: 10
    Dernier message: 15/11/2006, 23h36
  4. Réponses: 3
    Dernier message: 24/05/2006, 22h23
  5. Réponses: 3
    Dernier message: 16/12/2002, 16h12

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