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 :

Calcul et Modification des valeurs dans un Tableau avec Java


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    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
    Points : 52
    Points
    52
    Par défaut Calcul et Modification des valeurs dans un Tableau avec Java
    Bonjour;

    Je suis un grand novice en Java par conséquent je galère avec des petits programmes, surtout quand il s'agit de mettre en place des fonctions dans programme et faire appel à ses fonction, en bref...
    Voici mon petit programme découpé en plusieurs fonctions mais ça ne marche pas, je sais qu'il y a des erreurs au niveau des fonctions mais je suis confus je ne sais pas quoi enlever ou quoi rajouter c'est pourquoi j'implore votre aide.

    J'aimerais avoir quelques explications sur ce point, merci d'avance.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    /**
     * Programme qui remplie un tableau des valeurs
     * Il le remplie à moitié
     * Il décale les valeurs de gauche à droite et de droite à Gauche
     * Il calcule le produit
     * 
     * @author AmadouW8
     *
     */
    public class tablauV {
     
    	/**
             * Fonction principale 
             * 
             * @param args
             */
    	public static void main(String[] args) {
     
    		/**Déclaration des valeurs
                     * 
                     */
    		int tab[]=new int[10];
     
     
    		decaleDroite();
    		decaleGauche();
    		calculeProduit();
     
    		/**Boucle pour initié le tableau à moitié
                     * 
                     */
     
     
    			for(int i=0; i<tab.length/2; i++){
     
    				tab[i]=i+1;
    				System.out.println(tab[i]);
    			}
     
    		}
     
    		/**Fonction pour décaler à droite
                     * @param tab, debut, fin
                     */
    		public static void  double[] decaleDroite( int tab[], int debut, int fin){
     
    			for(int i = fin; i >= debut; i--){
    				tab[i+1]=tab[i];
    			}
     
    			tab[debut]=0;
    			System.out.println(tab[i+1]);
    		}
     
    		/**Foction pour decaler les valeurs à Gauche
                     *      @param debut,fin, tab
                     */
    		public static void double decaleGauche(double tab[], int debut, int fin){
     
    			for(int i=debut; i<=fin; i++){
    				tab[i-1]=tab[i];
     
    			}
    			tab[fin]=0;
    			System.out.printl(tab[i-1]);
     
    		}
     
    		/**Fonction qui calcule le produit des valeurs des valeurs du tableau
                     * @param produit
                     */
    		public static produit(double produit, double tab[]){
     
    			for(int i=1; i<=tab.length; i++){
     
    			produit=produit*tab[i];
     
    			}
    			return produit;
    			System.out.println(produit);
    		}
     
     
     
     
     
     
    	}

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Effectivement, il y a beaucoup de problèmes dans ton code

    J'ai rajouté quelques commentaires

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    public class tablauV {
     
    	/**
             * Fonction principale 
             * 
             * @param args
             */
    	public static void main(String[] args) {
     
    		int tab[]=new int[10];
     
     
    		decaleDroite(); // cette méthode prends 3 paramètres : un tableau d'entier, un indice de début et un indice de fin
    		decaleGauche();// cette méthode prends 3 paramètres : un tableau de double, un indice de début et un indice de fin
    		calculeProduit();// cette méthode prends 2 paramètres : un double et un tableau de double
     
    		// il faudrait peut être initialiser le tableau AVANT de tenter des opérations dessus
     
    			for(int i=0; i<tab.length/2; i++){
     
    				tab[i]=i+1;
    				System.out.println(tab[i]);
    			}
     
    		}
     
    		// cette fonction doit renvoyer un tableau de double avec le mot clé return, ce n'est pas le cas pour l'instant..
    		// et pourquoi pas un tableau de int? Pourquoi double?
    		public static void  double[] decaleDroite( int tab[], int debut, int fin){
     
    			for(int i = fin; i >= debut; i--){
    				tab[i+1]=tab[i];
    			}
     
    			tab[debut]=0;
    			System.out.println(tab[i+1]);
    		}
     
    		// cette fonction doit renvoyer un double avec le mot clé return, ce n'est pas le cas pour l'instant..
    		// et pourquoi il prend en paramètre un tableau de double?
    		public static void double decaleGauche(double tab[], int debut, int fin){
     
    			for(int i=debut; i<=fin; i++){
    				tab[i-1]=tab[i];
     
    			}
    			tab[fin]=0;
    			System.out.printl(tab[i-1]);
     
    		}
     
    		// cette méthode n'a pas de type de retour : soit elle ne renvoie rien et il faut mettre void, soit tu veux un résultat et il faut le préciser (int?)
    		public static produit(double produit, double tab[]){
     
    			for(int i=1; i<=tab.length; i++){ // un tableau, ça commence toujours à 0
     
    			produit=produit*tab[i]; // il faut tester que ta valeur ne soit pas nulle avant de faire une opération
     
    			}
    			return produit;
    			System.out.println(produit); // interdit de faire quoi que ce soit après un return
    		}
     
    	}
    Je ne suis pas mort, j'ai du travail !

  3. #3
    Membre du Club
    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
    Points : 52
    Points
    52
    Par défaut
    Merci beaucoups,
    Oui c ça, j'ai du mal pour le moment à distinguer le rôle de chaque mot au niveau des fonction/methode quand et ce que il faut le mettre ou pas,
    mais avec la pratique je pense que je vais y arriver mais pour le moment c'est la galère.
    Voici j'ai corrigé quelques erreurs.

    Maintenant c'est au niveau de cette partie:

    l'appel des fonctions j'ai mis les arguments des fonctions, je remarque que les variable(debut, fin, produit), ça ne compile pas mais si je les remplace par des chiffre des constant il compile, alors que pour le produit je ne peux pas choisir un chiffre et d'ailleur c'est pas la bonne manière sûrement.

    En plus au niveau de la fonction produit, impossible de calculer le produit, je n'arrive pas à identifier l'erreur.

    decaleDroite(tab, debut, fin); // cette méthode prends 3 paramètres : un tableau d'entier, un indice de début et un indice de fin

    decaleGauche(tab, debut, fin);// cette méthode prends 3 paramètres : un tableau de double, un indice de début et un indice de fin
    calculeProduit(tab, produit);// cette méthode prends 2 paramètres : un double et un tableau de double


    // il faudrait peut être initialiser le tableau AVANT de tenter des opérations dessus: Comment faire ?


    Merci à l'avance eulbobo, dans l'attente de votre reponse .

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    public class tabManip {
     
        /**
         * Fonction principale 
         * 
         * @param args
         */
        public static void main(String[] args) {
     
            int tab[]=new int[10];
     
     
            decaleDroite(tab, debut, fin); // cette méthode prends 3 paramètres : un tableau d'entier, un indice de début et un indice de fin
                                        
            decaleGauche(tab, debut, fin);// cette méthode prends 3 paramètres : un tableau de double, un indice de début et un indice de fin
            calculeProduit(tab, produit);// cette méthode prends 2 paramètres : un double et un tableau de double
     
            // il faudrait peut être initialiser le tableau AVANT de tenter des opérations dessus
     
                for(int i=0; i<tab.length/2; i++){
     
                    tab[i]=i+1;
                    System.out.println(tab[i]);
                }
     
            }
     
            // cette fonction doit renvoyer un tableau de double avec le mot clé return, ce n'est pas le cas pour l'instant..
            // et pourquoi pas un tableau de int? Pourquoi double?
        
            /**Correction effectué, void retiré et return ajouté. Une question à quel moment peut-on mettre void ou return ?**/
            public static int[] decaleDroite( int tab[], int debut, int fin){
     
                for(int i = fin; i >= debut; i--){
                    tab[i+1]=tab[i];
     
                tab[debut]=0;
                System.out.println(tab[i+1]);
                }
                return tab;
            }
     
            // cette fonction doit renvoyer un double avec le mot clé return, ce n'est pas le cas pour l'instant..
            // et pourquoi il prend en paramètre un tableau de double?
            /**return ajouté et correction au niveau au niveau de type des variable*/
            public static int[] decaleGauche( int tab[], int debut, int fin){
     
                for(int i=debut; i<=fin; i++){
                    tab[i-1]=tab[i];
                    tab[fin-1]=0;
                    System.out.println(tab[i-1]);
                }
                return tab; 
     
            }
     
            // cette méthode n'a pas de type de retour : soit elle ne renvoie rien et il faut mettre void, soit tu veux un résultat et il faut le préciser (int?)
            /**
             * Correction Effectuée, "return produit" ajouté
             */
            public static double produit(double tab[], double produit){
     
                for(int i=1; i<=tab.length; i++){ 
                    
                produit=tab[0];// un tableau, ça commence toujours à 0
                                /**Correction effectué prdouit=tab[0] ajouté*/
                        
     
                produit=produit*tab[i]; // il faut tester que ta valeur ne soit pas nulle avant de faire une opération
                                        /**Je ne sais pas ce quoi l'erreur, je n'ai pas compris après avoir tester ce bloc seule ça me donne un message d'erreur lors de l'exécution
                                         du genre "java.lang.ArrayIndexOutOfBoundsException"**/
     
                System.out.println(produit);
                }
                return produit;
                 // interdit de faire quoi que ce soit après un return
            }
     
        }

  4. #4
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par Khalfe Voir le message
    Maintenant c'est au niveau de cette partie:

    l'appel des fonctions j'ai mis les arguments des fonctions, je remarque que les variable(debut, fin, produit), ça ne compile pas mais si je les remplace par des chiffre des constant il compile, alors que pour le produit je ne peux pas choisir un chiffre et d'ailleur c'est pas la bonne manière sûrement.
    Forcément, si tu utilises des variables en paramètres, il faut qu'elles existent et soient accessibles à l'endroit où tu t'en sers. La variable tab existe, mais ni debut, ni fin, ni produit. Mais tu peux passer tab en paramètre, et mettre effectivement des constantes pour début ou fin. Ou alors déclarer des variables, dont la valeur pourrait être par exemple lue au clavier. Ou encore déclarer des static final :


    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
    public class tabManip {
     
        private static final int NOMBRE_ELEMENTS = 10;
        private static final int DEBUT_DECALAGE_DROIT = 2;
        private static final int FIN_DECALAGE_DROIT = 4;
     
        /**
         * Fonction principale 
         * 
         * @param args
         */
        public static void main(String[] args) {
     
            int tab[]=new int[NOMBRE_ELEMENTS];
     
     
            decaleDroite(tab, DEBUT_DECALAGE_DROIT, FIN_DECALAGE_DROIT); // cette méthode prends 3 paramètres : un tableau d'entier, un indice de début et un indice de fin
     
            /*...*/
    Citation Envoyé par Khalfe Voir le message

    En plus au niveau de la fonction produit, impossible de calculer le produit, je n'arrive pas à identifier l'erreur.
    Il faudrait être plus précis : que signifie "impossible" ? Tu obtiens un message d'erreur, le résultat est faux, ou quoi ?

    Citation Envoyé par Khalfe Voir le message
    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
            /**
             * Correction Effectuée, "return produit" ajouté
             */
            public static double produit(double tab[], double produit){
     
                for(int i=1; i<=tab.length; i++){ 
                    
                produit=tab[0];// un tableau, ça commence toujours à 0
                                /**Correction effectué prdouit=tab[0] ajouté*/
                        
     
                produit=produit*tab[i]; // il faut tester que ta valeur ne soit pas nulle avant de faire une opération
                                        /**Je ne sais pas ce quoi l'erreur, je n'ai pas compris après avoir tester ce bloc seule ça me donne un message d'erreur lors de l'exécution
                                         du genre "java.lang.ArrayIndexOutOfBoundsException"**/
     
                System.out.println(produit);
                }
                return produit;
                 // interdit de faire quoi que ce soit après un return
            }
     
        }
    Mais si on regarde de plus près, tu obtiens probablement une exception de type ArrayIndexOutOfBountException. Si n est le nombre d'éléments dans le tableau, les indices vont de 0 à n-1, parce qu'il y n éléments justement et que celui d'indice 0 compte pour 1. Donc dans ton for, for(int i=1; i<=tab.length; i++), lorsque i vaut tab.length, tu obtiens une exception lors de produit=produit*tab[i], puis tab[tab.length] n'existe pas.

    Ensuite, je ne sais pas ce que tu cherches à calculer, mais je pense que ton algorithme ne correspond pas à ce que tu veux faire. Là, ton algorithme est de parcourir toutes la valeurs sauf la première (on va supposer que tu as corrigé la première erreur), et pour chacune de ces valeurs, tu

    • dis que produit est égale à la première valeur dans le tableau (tab[0) ; ceci à évidemment pour effet de perdre le calcul de produit pour la précédente itération
    • multiplie cette valeur (donc tab[0]) par la valeur courant (tab[i]).

    A la fin de la boucle, produit vaut donc tab[0] × tab[tab.length-1], soit le produit de la première avec la dernière.



    PS: A noter que tu n'initialises toujours pas le tableau avant d'appeler tes méthodes (un tableau de int ne contenant que des 0 par défaut, tous tes appels de méthodes se font sur un tableau remplis de 0).
    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.

  5. #5
    Membre du Club
    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
    Points : 52
    Points
    52
    Par défaut
    Merci pour votre réponse, ça m'a aidé à comprendre beaucoup car tout était confus dans ma tête concernant les font, mais la je commence à avoir une visibilité.

    J'ai verifié le programme l'exception n'est plus là après correction du length au lieu de >=, j'ai mis >;

    Mais je n'arrive pas à comprendre au niveau du produit, il me donne que des "0". vous dites il faut l'initialisé, comment faire pour l'initialisé ?
    Son objectif, voici la question:

    Écrivez une fonction produitTableauReels qui reçoit un tableau de réels et son nombre d’éléments significatifs. La fonction retourne le produit des valeurs selon le nombre reçu. Par exemple, sin on affiche les 4 premières valeurs d’un tableau contenant les valeurs 11, 22, 33 et 40 la fonction retournera 24.6.

    Un deuxième petit problème, le programme n'affiche pas les valeurs de la fonction decaleDroite(tab, debut, fin);


    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    public class tabManip {
     
    	/**
             * Fonction principale 
             * 
             * @param args
             */
    	public static void main(String[] args) {
     
    		int tab[]=new int[10];
    		int debut, fin,produit;
    		int i=0;
    		debut=tab[i+1];
    		fin=tab[9];
    		produit=tab[0];;
     
     
    		decaleDroite(tab, debut, fin); 
    		decaleGauche(tab, debut, fin);
    		produit(tab, produit);
     
    		// Fonction pour remplir le tableau
    			for(i=0; i<tab.length/2; i++){
     
    				tab[i]=i+1;
    				System.out.println("Les valeurs du tableau sont:"+tab[i]);
    			}
     
    		}
     
    		// Fonction qui efface les valeurs de la droite à gauche
     
    		public static int[] decaleDroite( int tab[], int debut, int fin){
     
    			for(int i = fin; i >= debut; i--){
    				tab[i+1]=tab[i];
     
    			tab[debut]=0;
    			System.out.println("Decalage droite  est:"+tab[i+1]);
    			}
    			return tab;
    		}
     
     
    		// Fonction qui efface les valeurs de la droite à gauche à droite
    		public static int[] decaleGauche( int tab[],int debut,int fin){
     
    			for(int i=debut; i< tab.length; i++){
    				tab[tab.length-1]=tab[i];
    				tab[tab.length-1]=0;
    				System.out.println("Le decalage de Gauche "+i+" est:"+tab[tab.length-1]);
    			}
    			return tab; 
     
    		}
     
    		// cette méthode n'a pas de type de retour : soit elle ne renvoie rien et il faut mettre void, soit tu veux un résultat et il faut le préciser (int?)
    		/**
                     * Correction Effectuée, "return produit" ajouté
                     */
    		public static int produit(int tab[], int produit){
     
    			for(int i=1; i < tab.length; i++){     
     
     
       		produit=produit*tab[i]; 								
    		System.out.println("Le produit est:"+produit);
    			}
    			return produit;
    			 // interdit de faire quoi que ce soit après un return
    		} 
     
    	}

  6. #6
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Khalfe Voir le message
    Mais je n'arrive pas à comprendre au niveau du produit, il me donne que des "0". vous dites il faut l'initialisé, comment faire pour l'initialisé ?
    C'est ce que tu appelles "remplir" dans ton code. Tu dois bien te douter qu'il faut mettre les valeurs dans le tableau avant de traiter le tableau, sinon ce ne sont pas ces valeurs que tu traiteras, mais celles qui sont par défaut dans le tableau, soit que des 0.

    Son objectif, voici la question:

    Citation Envoyé par Khalfe Voir le message
    Écrivez une fonction produitTableauReels qui reçoit un tableau de réels et son nombre d’éléments significatifs. La fonction retourne le produit des valeurs selon le nombre reçu. Par exemple, sin on affiche les 4 premières valeurs d’un tableau contenant les valeurs 11, 22, 33 et 40 la fonction retournera 24.6.
    D'après mes vieux souvenirs rouillés de maths, le produit de 11, 22, 33 et 40 est 11 × 22 × 33 × 44 = 319440. Je ne sais pas ce qu'est un produit selon un nombre, et je ne vois pas à quoi pourrait correspondre 24,6 dans le contexte. Ce n'est même pas la moyenne des valeurs (26,5).
    A noter qu'on parle de tableau de réels. Ce qui ressemble le plus à un réel (sans en être vraiment un) en Java est soit un float, soit un double, mais pas un int.

    Citation Envoyé par Khalfe Voir le message
    Un deuxième petit problème, le programme n'affiche pas les valeurs de la fonction decaleDroite(tab, debut, fin);
    C'est toujours et encore le même problème : tu appelles decaleDroite avant de mettre des valeurs dans le tableau. La façon d'afficher le résultat n'est pas terrible, mais bon, tu auras quand même un résultat de cette manière (sinon, pour afficher un tableau, tu peux faire System.out.println(Arrays.toString(tab));, mais à faire quand tout le traitement est effectué bien sûr). Mais là, comme tu décales à droite un tableau qui ne contient des 0, ça ne t'affiche que des 0.
    A noter, que tab[debut]=0; n'est pas placé au bon endroit : tu l'as mis dans la boucle, donc il va se faire des la première itération, ce qui aura pour effet de remplacer la première valeur par 0. Ainsi, [1,2,3,4,5] donnera [0,0,2,3,4] au lieu de [0,1,2,3,4].

    A noter également qu'il y a quelque chose de génant dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i = fin; i >= debut; i--){
        tab[i+1]=tab[i];
    }
    Mettons le tableau [1,2,3,4,5]. On peut logiquement imaginer qu'un décalage à droite de 1 à 3 donnerait [1,?,2,3,5] (ou [1,?,2,4,5] si on exclut la borne 2, c'est-à-dire qu'on décale les éléments d'indices 1 et 2 et non pas 1,2 et 3). J'ai mis ? parce que mettre 0 à la place ou autre chose me semble étrange (en fait c'est décaler à droite une sous partie d'un tableau que je trouve étrange, à moins qu'on cherche à obtenir [1,4,
    2,3,5], donc faire une rotation à droite, qui me semble avoir plus de sens). Toujours est-il que ton code va donner [1,0,0,3,4]. Même si on considère que les indices vont de 1 à n, le décalage de 1 à 3 devrait donner [0,1,2,4,5]...




    Quant à decaleGauche, c'est n'importe quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab[tab.length-1]=tab[i];
    tab[tab.length-1]=0;
    Dans la mesure où la seconde ligne modifie le même élément que la première tu peux enlever la première. Donc ta méthode met 0 dans l'avant dernier élément du tableau (plusieurs fois, mais ça change rien).
    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. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  2. Mettre à jour des valeurs dans un tableau
    Par espadon1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/10/2006, 13h31
  3. ecrire des valeurs dans un tableau via formulaire
    Par kenny49 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/07/2006, 10h23
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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