0
votes

Pourquoi mon tableau affiche-t-il des 0 lorsque je le retourne et l'inverse?

Tentative d'inverser un tableau d'entrée utilisateur.

Mon code

 [50, 40, 30, 20, 10]

Quand j'entre:

  int[] array = {10, 20, 30, 40, 50};
    int[] reversed = new int[array.length];
    for (int i = 0; i < array.length; i++) {
        reversed[i] = array[array.length - 1 - i];
    }
    System.out.println(Arrays.toString(reversed));

J'obtiens:

 output:
 [0, 0, 30, 20, 10]

Pourtant, quand je code des nombres en dur, cela fonctionne très bien.

 10
 20
 30
 40
 50

Je reviens:

    Scanner s = new Scanner(System.in);
    System.out.println("Enter numbers: ");
    int[] array = new int[5];
    int[] reversed = new int[array.length];
    for (int i = 0; i < array.length; i++) {
        array[i] = s.nextInt();
        reversed[i] = array[array.length - 1 - i];
    }
    System.out.println(Arrays.toString(reversed));

Je ne sais pas ce que je fais de mal ici. Je sais qu'il existe d'autres façons de faire la même chose, mais j'essaie de comprendre pourquoi ma façon de procéder me pose des problèmes.


0 commentaires

3 Réponses :


2
votes

Vous remplissez vos tableaux du début à la fin, et vous remplissez inversé avec les valeurs de array , avant qu'elles ne soient remplies!

Plus précisément, une fois que vous essayez de remplir inversé [0] , vous utilisez array [4] , qui n'a pas encore été rempli.

Vous pouvez le surmonter, en remplissant d'abord le tableau , et commencer à remplir inversé dans une deuxième boucle une fois la première terminée.


0 commentaires

0
votes

Essayez le code ci-dessous pour implémenter l'inversion du tableau:

Enter numbers:                                                                                                                                                
1                                                                                                                                                             
2                                                                                                                                                             
3                                                                                                                                                             
4                                                                                                                                                             
5                                                                                                                                                             
Reversed array is:

5                                                                                                                                                             
4                                                                                                                                                             
3                                                                                                                                                             
2                                                                                                                                                             
1 

Sortie:

import java.util.Scanner;
import java.util.Arrays;


public class Main {
    
    public static void main(String args[]) { 
        
        Scanner s = new Scanner(System.in);
        System.out.println("Enter numbers: ");
        int[] array = new int[5];
        int[] reversed = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            array[i] = s.nextInt();
        }

        int j = array.length; 
        for (int i = 0; i < array.length; i++) { 
            reversed[j - 1] = array[i]; 
            j = j - 1; 
        } 

        System.out.println("Reversed array is: \n"); 
        for (int k = 0; k < array.length; k++) { 
            System.out.println(reversed[k]); 
        } 
    } 
}


0 commentaires

2
votes

changez simplement cette ligne:

 reversed[array.length-1-i] = array[i];

en:

 reversed[i] = array[array.length - 1 - i];

comme indiqué, vous essayez d'accéder au tableau avant qu'il ne soit rempli p>


0 commentaires