Java.lang.ArrayIndexOutOfBoundsException: 3

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

import java.util.Scanner;
public class Somme 
{
 public static void main(String[] args) 
 {
  int i;
  int n=0;
  Scanner sc=new Scanner(System.in);
  System.out.print("Entrez le nb du tableau:");
  int nb=sc.nextInt();
  int tab[]=new int[nb];
  for(i=0;i<nb; i++)
  {
   System.out.print("Entrez l'élément "+(i+1)+":");
   tab[i]=sc.nextInt();
  }
  System.out.println("Vous avez rentré les numeros suivantes:");
  for(i=0;i<nb;i++)
  {
   System.out.print(tab[i]+"."); 
  }
  int moi=Test(tab,n);
  System.out.println(moi);
  
 }
 public static int Test(int[]tab,int n)
 {
  System.out.println("\nAprès l'inversion les numéros sont:");
  int i=0;
  n=tab.length-1;
  for(i=0; i<n; i++)
  {
   int temp=tab[i];
   tab[i]=tab[n-i];
   tab[n-i]=temp;
   //System.out.print(tab[i]+".");  
  }
  int moi=tab[n-i];
  return(moi);
 } 
    } 


2 réponses

  1. Contributeur
    Bonjour,

    int moi=Test(tab,n);

    Doit être
    int moi=Test(tab,nb);


    Puisque n n'est pas utilisé dans le main et est égal à 0.
    1. toujours pareil
       int moi=Test(tab,nb);
        System.out.println(moi);
        
       }
       public static int Test(int[]tab,int nb)
       {
        System.out.println("\nAprès l'inversion les numéros sont:");
        int i=0;
        nb=tab.length-1;
        for(i=0; i<nb; i++)
        {
         int temp=tab[i];
         tab[i]=tab[nb-i];
         tab[nb-i]=temp;
        }
        int moi=tab[nb-i];
        return(moi);
       } 
          }