Probleme en java

Résolu/Fermé
bouchrot Messages postés 352 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 2 janvier 2023 - 27 nov. 2011 à 20:34
bouchrot Messages postés 352 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 2 janvier 2023 - 4 déc. 2011 à 20:52
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

A voir également:

1 réponse

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
bouchrot Messages postés 352 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 2 janvier 2023 6
4 déc. 2011 à 19:18
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
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
4 déc. 2011 à 19:21
Regarde la documentation : java.util.ArrayList<E>
0
bouchrot Messages postés 352 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 2 janvier 2023 6
4 déc. 2011 à 19:43
donne moi un exemple ou une autre solution a mon problème pour mieux comprendre
0
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
4 déc. 2011 à 19:52
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
bouchrot Messages postés 352 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 2 janvier 2023 6
4 déc. 2011 à 20:05
merci pour votre aide mais je n'arrive pas a comprendre
0