après l'inversion manques des éléments

après l'inversion manques des éléments - Java - Programmation

Marsh Posté le 19-01-2016 à 10:44:13    

Bonjour
En exécutant mon programme, ce dernier me donne que un seul éléments inversé:
Entrez le nb du tableau:3
Entrez l'élément 1:4
Entrez l'élément 2:5
Entrez l'élément 3:6
Vous avez rentré les numéros suivantes:
4.5.6.
Après l'inversion les numéros sont:
6
veuillez m'aidez s'il vous plaît

Code :
  1. import java.util.Scanner;
  2. public class Somme
  3. {
  4. public static void main(String[] args)
  5. {
  6.  int i;
  7.  int n=0;
  8.  Scanner sc=new Scanner(System.in);
  9.  System.out.print("Entrez le nb du tableau:" );
  10.  int nb=sc.nextInt();
  11.  int tab[]=new int[nb];
  12.  for(i=0;i<nb; i++)
  13.  {
  14.   System.out.print("Entrez l'élément "+(i+1)+":" );
  15.   tab[i]=sc.nextInt();
  16.  }
  17.  System.out.println("Vous avez rentré les numeros suivantes:" );
  18.  for(i=0;i<nb;i++)
  19.  {
  20.     System.out.print(tab[i]+"." );
  21.  }
  22.  int moi=Test(tab,nb);
  23.  System.out.println(moi);
  24. }
  25. public static int Test(int[]tab,int nb)
  26. {
  27.  System.out.println("\nAprès l'inversion les numéros sont:" );
  28.  int i=0;
  29.  nb=tab.length-1;
  30.  for(i=0; i<nb; i++)
  31.  {
  32.   int temp=tab[i];
  33.   tab[i]=tab[nb-i];
  34.   tab[nb-i]=temp;
  35.   //System.out.print(tab[i]+"." );   
  36.  }
  37.  int moi=tab[nb-i];
  38.  return(moi);
  39.     }
  40.   }

Reply

Marsh Posté le 19-01-2016 à 10:44:13   

Reply

Marsh Posté le 19-01-2016 à 10:56:47    

domxaline a écrit :

Bonjour
En exécutant mon programme, ce dernier me donne que un seul éléments inversé:
Entrez le nb du tableau:3
Entrez l'élément 1:4
Entrez l'élément 2:5
Entrez l'élément 3:6
Vous avez rentré les numéros suivantes:
4.5.6.
Après l'inversion les numéros sont:
6
veuillez m'aidez s'il vous plaît

Code :
  1. [...]
  2. public static int Test(int[]tab,int nb)
  3. {
  4.  System.out.println("\nAprès l'inversion les numéros sont:" );
  5.  int i=0;
  6.  nb=tab.length-1;
  7.  for(i=0; i<nb; i++)
  8.  {
  9.   int temp=tab[i];
  10.   tab[i]=tab[nb-i];
  11.   tab[nb-i]=temp;
  12.   //System.out.print(tab[i]+"." );   
  13.  }
  14.  int moi=tab[nb-i];
  15.  return(moi);
  16.     }
  17.   }



 
La fonction "Test()" retourne le premier élément du tableau (l'élément d'indice nb-nb= 0) et pas le tableau lui même, donc il est normal qu'une variable de type int ne contienne qu'un seul élément.  

Reply

Marsh Posté le 19-01-2016 à 11:16:21    

d'accord  
pour retourner le tableau lui même, quel est la solution svp


Message édité par domxaline le 19-01-2016 à 11:18:06
Reply

Marsh Posté le 19-01-2016 à 11:30:31    

cette fois je trouve un message outof bound exception
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
 at Somme.Test(Somme.java:32)
 at Somme.main(Somme.java:21)
 

Code :
  1. import java.util.Scanner;
  2. public class Somme
  3. {
  4. public static void main(String[] args)
  5. {
  6.  int i;
  7.      Scanner sc=new Scanner(System.in);
  8.      System.out.print("Entrez le nb du tableau:" );
  9.      int nb=sc.nextInt();
  10.      int tab[]=new int[nb];
  11.      for(i=0;i<nb; i++)
  12.      {
  13.          System.out.print("Entrez l'élément "+(i+1)+":" );
  14.          tab[i]=sc.nextInt();
  15.      }
  16.      System.out.println("Vous avez rentré les numeros suivantes:" );
  17.      for(i=0;i<nb;i++)
  18.      {
  19.          System.out.print(tab[i]+"." );
  20.      }
  21.      int moi=Test(tab,nb);
  22.      System.out.println(moi);
  23. }
  24. public static int Test(int[]tab,int nb)
  25. {
  26.      System.out.println("\nAprès l'inversion les numéros sont:" );
  27.      int i=0;
  28.      nb=tab.length-1;
  29.      for(i=0; i<nb; i++)
  30.      {
  31.          int temp=tab[i];
  32.          tab[i]=tab[nb-i];
  33.          tab[nb-i]=temp;
  34.          //System.out.print(tab[i]+"." );  
  35.      }
  36.      int moi=tab[nb-1];
  37.      return(moi);
  38.    }
  39. }


Message édité par domxaline le 19-01-2016 à 12:21:36
Reply

Marsh Posté le 19-01-2016 à 12:19:13    

mon programme marche bien sans faire par la méthode
regardez  
 

Code :
  1. import java.util.Scanner;
  2. public class Inverse
  3. {
  4. public static void main(String[] args)
  5. {
  6. int n, i;
  7. Scanner sc=new Scanner(System.in);
  8. System.out.print("Entrez le nb du tableau:" );
  9. int nb=sc.nextInt();
  10. int tab[]=new int[nb];
  11. for(i=0; i<nb; i++)
  12. {
  13.    System.out.print("Entrez l'élément "+(i+1)+":" );
  14.    tab[i]=sc.nextInt();
  15. }
  16. System.out.println("Vous avez rentré les numéros suivantes:" );
  17. for(i=0; i<nb; i++)
  18. {
  19.    System.out.print(tab[i]+"." );
  20. }
  21. System.out.println("\nAprès l'inversion les numéros sont:" );
  22. n=tab.length-1;
  23. for(i=0; i<=n; i++)
  24. {
  25.    int temp=tab[i];
  26.    tab[i]=tab[n-i];
  27.    tab[n-i]=temp;
  28.    System.out.print(tab[i]+"." ); 
  29. }
  30. }
  31. }


mais dans la méthode il ne fonctionne pas

Reply

Marsh Posté le 19-01-2016 à 17:03:08    

j'ai changé un peu mon programme, maintenant il marche, mais la résultat sort de la méthode
mais je veux qu'il prend la résultat de la méthode Test et s'afficher dans la main méthode
quel qu'un peut m'aider svp?

Code :
  1. import java.util.Scanner;
  2. public class Somme
  3. {
  4. public static void main(String[] args)
  5. {
  6.  int i;
  7.      Scanner sc=new Scanner(System.in);
  8.      System.out.print("Entrez le nb du tableau:" );
  9.      int nb=sc.nextInt();
  10.      int tab[]=new int[nb];
  11.      for(i=0;i<nb; i++)
  12.      {
  13.          System.out.print("Entrez l'élément "+(i+1)+":" );
  14.          tab[i]=sc.nextInt();
  15.      }
  16.      System.out.println("Vous avez rentré les numeros suivantes:" );
  17.      for(i=0;i<nb;i++)
  18.      {
  19.          System.out.print(tab[i]+"." );
  20.      }
  21.    
  22.      Test(tab);
  23. }
  24. public static void Test(int[]tab)
  25. {
  26.      System.out.println("\nAprès l'inversion les numéros sont:" );
  27.      
  28.      for(int i = tab.length-1; i>=0; i--)
  29.      {
  30.          System.out.print(tab[i]+"." );
  31.      }
  32.  
  33.    }
  34. }

Reply

Marsh Posté le 24-03-2016 à 15:53:56    

Il est important d'utiliser les outils offerts par Java.
Ci-dessous, ton programme modifié :

Code :
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Scanner;
  4. public final class Somme {
  5. public static void main(String[] args) {
  6.  Scanner sc = new Scanner(System.in);
  7.  System.out.print("Entrez le nb du tableau:" );
  8.  int nb = sc.nextInt();
  9.  ArrayList<Integer> tab = new ArrayList<Integer>();
  10.  for (int i = 0; i < nb; i++) {
  11.   System.out.print("Entrez l'élément " + (i + 1) + ":" );
  12.   tab.add(sc.nextInt());
  13.  }
  14.  System.out.println("Vous avez rentré les numeros suivantes:" );
  15.  for (Integer integer : tab) {
  16.   System.out.print(integer + "." );
  17.  }
  18.  Collections.reverse(tab);
  19.  System.out.println("\nAprès l'inversion les numéros sont:" );
  20.  for (Integer integer : tab) {
  21.   System.out.print(integer + "." );
  22.  }
  23. }
  24. }


A ta disposition


Message édité par 90degre le 24-03-2016 à 15:54:12
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed