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 :

Ajouter / retirer des valeurs dans un tableau en Java


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 69
    Par défaut Ajouter / retirer des valeurs dans un tableau en Java
    Bonjour;

    Je suis entrain de travailler sur un tableau contenant des valeurs de type double, j'utilise des modules qui contiennent des sous programmes.
    J'ai plusieurs questions qui sont les suivantes:

    1) J'ai un sous programme du nom de sousTableauReels dans un module, UtilitaireTableau;
    il m'affiche [D@40128cad on dirait la réfence du tableauReels, je n'arrive pas à identifier la petite bête afin d'avoir les vrai valeurs du tableau.

    voici le code du sous programme et le programme principale(main) et tout en bas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static double[] sousTableauReels(double [] tableau, int debut, int fin){
        double tableauReels[] = new double[fin];
     
         for(int i = debut; i < 5;i++ ){
             tableauReels[i] = tableau[i];
     
                    }
         return tableauReels;
            }

    2) Mon tableau contient des valeurs de 2 à 10 initialisé à moitié, j'ai fait 2 sous programmes pour decaler les valeurs à droite/gauche qui m'affichent

    Tableau decaller à gauche :
    4.0
    5.0
    6.0
    7.0
    Tableau decaller à droite :
    6.0
    5.0
    4.0
    3.0

    J'aimerais avoir les même valeurs de gauche à droite et vice versa
    par exemple: 6.0 à 3.0 et de 3.0 à 6.0

    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
    public class UtilitaireTableau {
     
     
        //Sous programme pour decaler les valeurs du tableau à gauche
     
           public static void decalerGauche(double[] tableau,int nbElmt,int debut, int fin ){
               //Declaration du tableau qui reçoit les valeurs
               double decGauche [] = new double[fin];
               System.out.println("Tableau decaller à gauche :");
               for(int i = debut; i < fin; i++){
                   decGauche[i] = tableau[i+1];
     
               System.out.println(decGauche[i]);    
               }
     
           }
     
        // Sous programme pour decaler les valeurs du tableua a droite
        public static void decalerDroite( double tableau[], int debut, int fin){
                            int i = 0;
                            System.out.println("Tableau decaller à droite :");
    			for(i = fin; i > debut; i--){
    				tableau[i] = tableau[i-1];
     
    			System.out.println(tableau[i]);
    			} 
     
                            }
     
        }
    3) Je veux créer 2 sous programmes un, pour ajouter un element dans le tableau, j'aimerais avoir l'indice l'endroit où l'element a été ajouté
    si le tableau est plein il y a aucun ajout.

    Un autre pour retirer un element dans le tableau et l'indice où l'elmt à été retiré si le tableau est vide il n y a aucun retrait.

    J'ai beaucoup réfléchi mais je n'arrive pas à mettre en place l'algorithme;
    ***************************
    Programme principale
    ****************************
    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
     
     
     */
    public class Labo3 {
     
        public static void main(String[] args){
     
        //Declaration des variables
       double tableau[] = new double [10];   
       int nbElmt = 5;
       int debut = 1;
       int fin = 5;
     
       System.out.println("La moitié des valeurs du tableau sont :");
        //Initiaisation du tableau à moitié
        for(int i = 0; i < tableau.length/2;i++){
           tableau[i] = i+2; 
           System.out.println(tableau[i]);
     
        }
        //Afficher les valeurs du tableau remplie à moitié
        UtilitaireAffichage.afficherTableauReels(tableau);
     
        System.out.println("Le produit du tableau "+UtilitaireTableau.produitTableauReels(tableau, nbElmt));
     
        System.out.println("Le sous tableau des réel:"+UtilitaireTableau.sousTableauReels(tableau,debut,fin));
        UtilitaireTableau.decalerGauche(tableau, nbElmt, debut,fin);
        UtilitaireTableau.decalerDroite(tableau, debut,fin);
        }
     
     
    }
    Merci d'avance,

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Réponse à la question 1 :

    Le résultat obtenu est parfait. C'est tout à fait normal, au regard de votre code que vous obteniez cela.
    Bref, votre fonction "UtilitaireTableau.sousTableauReels(tableau,debut,fin)" renvoie un tableau de double, double[]. System.out.println(...) permet d'afficher du texte sur le flux de sortie système, en d'autre terme, envoie des caractères ASCII vers la console tout en terminant cet envoie d'un retour chariot. Comme double[] est un objet, ce n'est pas une chaîne de caractère, la machine virtuelle Java invoque sa méthode toString() pour obtenir la représentation de votre double[] sous forme de chaîne de caractères. Donc, les valeurs sont interprétées comme des caractères ASCII et non comme des valeur double, et s'affichent encadrées de crochets pour montrer qu'il s'agit d'un tableau.
    C'est donc parfaitement normal.
    Si vous voulez afficher le contenu de votre tableau, il faut faire une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double table = UtilitaireTableau.sousTableauReels(tableau,debut,fin);
    for (double d:table) System.out.println(d);
    Ici, d n'est pas un tableau de double assimilé à un objet, mais un type primaire que la machine virtuelle convertira sans problème en caractères nombre pour afficher la valeur double. Une version simplifiée de Double.toString(d).

    Réponse à la question 2 :

    Tout comme pour la question 1, hormis la valeur 7.0 ??? D'où vient-elle ? le résultat est correcte, du moins, le code que vous montrez donne bien cela, sauf pour la valeur 7.0 dont je ne comprends pas la présence. Il devrait selon votre code y avoir la valeur 0.0 à la place de 7.0, non ?
    Bref, comme le code montré donne à peu près le résultat présenté, je ne vois pas où est le problème...

    Réponse à la question 3 :

    Là, j'ai beaucoup réfléchi, mais je ne comprends pas du tout la question ?!........

    Vous devriez commencer par décrire simplement votre point de départ, et ce que vous voulez obtenir. On comprendra beaucoup mieux. Ensuite, il faudra vous forcer à reprendre votre code pour qu'il soit propre.
    Ce que j'arrive à comprendre est que vous désirez partir d'un tableau { 2.0, 3.0, 4.0, 5.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0 } pour arriver à { 2.0, 3.0, 4.0, 5.0, 6.0, 6.0, 5.0, 4.0, 3.0, 2.0 } ce qui en l'occurrence revient à dire :
    { n, n+1, n+2, n+3, n+4,........,n+(L/2), n+(L/2), ...........,n+4, n+3, n+2, n+1, n } où L représente la longueur totale du tableau. Dans votre code L vaut 10. Après, moi je n'ai pas le niveau mathématique, mais ça ressemble beaucoup à une suite numérique...
    Ou pas.....
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. [XL-2010] Ajouter des valeurs dans un tableau avec vba
    Par lovlov33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/01/2016, 17h01
  2. Calcul et Modification des valeurs dans un Tableau avec Java
    Par Khalfe dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 25/09/2015, 02h36
  3. [WD18] Ajouter des valeurs dans un tableau simple
    Par olihop dans le forum WinDev
    Réponses: 2
    Dernier message: 18/11/2014, 11h23
  4. Ajouter des valeurs dans un tableau
    Par Mrlaurent90 dans le forum BIRT
    Réponses: 4
    Dernier message: 09/03/2011, 10h55
  5. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41

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