Probleme en java

Résolu
bouchrot Messages postés 394 Statut Membre -  
bouchrot Messages postés 394 Statut Membre -
Bonjour,

salut ,j'ai un problème en java (ajouter un élément X a la fin des N cases remplies d'un tableau ).
voici ma solution

package tabl.ajout_element;

import java.util.*;
public class TablAjout_element {

public static void main(String[] args) {
Scanner ajouter = new Scanner(System.in);
int tab[],i,t;
System.out.println("Entrez la taille de tableau");
t = ajouter.nextInt();
tab = new int[t];
for(i=0;i<t;i++){
System.out.println("tab[]:"+(i+1));
tab[i] = ajouter.nextInt();
}
for(i=0;i<t;i++){
System.out.println("tab[i]:"+tab[i]);
}
int tabx[];
tabx = new int[1];
for(i=0;i<t;i++){
System.out.println("tab[]:"+tab[i]+tabx[1]);
}
}
}
s'il vous plait que quelqu'un m'aide a résoudre se problème

1 réponse

  1. danimo
     
    Salut,

    Je ne suis pas certain de comprendre ce que tu veux faire exactement.

    Mais ce qui est certain, c'est qu'on ne peut rien ajouter à un tableau dont tous les éléments sont remplis. Il n'est pas possible d'augmenter la taille d'un tableau.

    Voici une solution, que je n'aime pas beaucoup:

    On a le tableau tab qui est plein et on veut ajouter un nouvel élément.
    Il faut déclarer un nouveau tableau tabx de taille = celle de tab +1 (si on ne veut ajouter qu'un élément).
    On copie tous les éléments de tab dans tabx et on y ajoute le nouvel élément.

    Ton code devient:
    import java.util.*;  
       public class TablAjout_element {  
        
        
          public static void main(String[] args) {  
             Scanner ajouter = new Scanner(System.in);  
             int tab[],i,t;  
             System.out.print("Entrez la taille de tableau: ");  
             t = ajouter.nextInt();  
             System.out.println("t = " + t);  
             tab = new int[t];  
             for(i=0;i<t;i++){ 
             // On enregistre dans tab les t éléments saisis 
                System.out.print("Entrez la valeur de l'élément " + i + " : ");   
                tab[i] = ajouter.nextInt();  
             } 
              
             for(i=0;i<t;i++){ 
             // Liste du contenu de tab 
                System.out.println("tab[" + i + "]:"+tab[i] + "\n");  
             } 
              
             // On déclare un nouveau tableau >> tabx de taille celle de tab + 1 
             // pour qu'on puisse y stoker les éléments de tab plus le nouvel élément (un seul dans le cas présent) 
             int tabx[];  
             tabx = new int[t +1]; 
             for(i=0;i<t;i++){ 
                tabx[i] = tab[i]; // 0n copie tous les éléments de tab dans tabx  
             }  
             System.out.print("Entrez la valeur de l'élément " + i + " : "); 
             tabx[i] = ajouter.nextInt(); 
             for(i=0;i<tabx.length;i++){  
                System.out.println("tabx[" + i + "]:" + tabx[i] + "\n");  
             }   
          }  
       } 
    


    Je pense qu'il serait beaucoup mieux d'utiliser une ArrayList<....> (import java.util.ArrayList;)
    qui permet de créer un tableau sans la contrainte de la taille...

    --
    Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
    0
    1. bouchrot Messages postés 394 Statut Membre 6
       
      Merci infiniment ça marcher marcher je suis très reconnaissant
      a propos de cette Arraylist je ne connais pas si tu veux me donner une idée ça sera joli de ta part
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Regarde la documentation : java.util.ArrayList<E>
      0
    3. bouchrot Messages postés 394 Statut Membre 6
       
      donne moi un exemple ou une autre solution a mon problème pour mieux comprendre
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      Je fais une méthode (je t'ai expliqué sur ton autre post pourquoi)

      /** Créé un nouveau tableau en ajoutant x à la fin de tab */
      public static int[] ajouter(int[] tab, int x)
      {
          int n = tab.length;
          int[] tab2 = new int[n+1];
          for (int i=0; i<n; i++)
              tab2[i]=tab[i];
          tab2[n]=x;
      }
      
      /** Ajoute x à la fin de la liste */
      public static void ajouter(ArrayList<Integer> liste, int x)
      {
          liste.add(x);
      }

      C'est clairement plus simple avec une liste non ? Et tellement plus propre en découpant les méthodes.
      0
    5. bouchrot Messages postés 394 Statut Membre 6
       
      merci pour votre aide mais je n'arrive pas a comprendre
      0