Exception in thread "main" java.lang.Anticonceptionnelle: 4

Résolu
domxaline -  
 domxaline -
Bonjour,
en exécutant mon prg il dit que

Exception in thread "main" java.lang.Anticonceptionnelle: 4

normalement il doit afficher

"L'élément n'apparait pas dans ce tableau"

voilà mon output:

Entrez un élément: 4
Entrez un numéros 0: 5
Entrez un numéros 1: 6
Entrez un numéros 2: 7
Entrez un numéros 3: 6
L'élément à chercher: 9
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at preOccurrence.occprem(preOccurrence.java:42)
at preOccurrence.main(preOccurrence.java:12)

veuillez m'aidez svp
import java.util.Scanner;
public class preOccurrence
{
    public static void main(String[] args)
    {
      Scanner sc=new Scanner(System.in);
      System.out.print("Entrez un élément: ");
      int nb=sc.nextInt();
      int[]tab=new int[nb];
      int[]result=occprem(tab);
      if(result!=null)
        {
            System.out.println("L'élément à chercher 1er occurrance apparait à la position:"+result[0]);
        }
    }
 
    private static int[] occprem(int[] tab)
    {
        boolean existe=false;
        int p=0;
        Scanner sc=new Scanner(System.in);
        for(int i=0;i<tab.length;i++)
        {
            System.out.print("Entrez un numéros "+(i+0)+": ");
            tab[i]=sc.nextInt();
        }
        if(tab.length==0)
        {
            System.out.println("tableau est vide: ");
        }
        else
        {
            System.out.print("L'élément à chercher: ");
            int cher=sc.nextInt();
             
            int i=0;
             
            do
            {
                if(tab[i]==cher)
                {
                    existe=true;
                    p=i;
                }
                else
                {
                    i=i+1;
                }
            }while((i<=tab.length) && (existe==false));
            if(existe==true)
            {
                return new int[]{p};
            }
            else
            {
                System.out.print("L'élément n'apparait pas dans ce tableau");
            }
        }
        return tab;
    }
}


4 réponses

  1. BioK03 Messages postés 651 Date d'inscription   Statut Membre Dernière intervention   134
     
    Bonjour,

    Ligne 52, vous faites votre do...while sur la condition
    i<=tab.length

    Ne devras-ce pas être sur
    i<tab.length

    ?

    Cordialement
    0
  2. domxaline
     
    merci pour votre aide
    mais ça ne marche pas
    0
  3. domxaline
     
    en changeant comme ceci:

    }while((i<tab.length) && (existe==false));


    mon output est:

    Entrez un élément: 3
    Entrez un numéros 0: 4
    Entrez un numéros 1: 5
    Entrez un numéros 2: 6
    L'élément à chercher: 7
    L'élément n'apparait pas dans ce tableauL'élément à chercher 1er occurrance apparait à la position:4

    mon output est:

    Entrez un élément: 0
    tableau est vide:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at PreOccurence1.main(PreOccurence1.java:15)
    0
    1. BioK03 Messages postés 651 Date d'inscription   Statut Membre Dernière intervention   134
       
      Essayez, ligne 11, de mettre au lieu de :
      if(result!=null)

      mettre ça :
      if(result!=null && result.length>0)

      car vous accédez après directement à la première case
      0
  4. domxaline
     
    mais
    s'il ne trouve pas élément il s'affiche une erreur
    Entrez un élément: 3
    Entrez un numéros 0: 4
    Entrez un numéros 1: 5
    Entrez un numéros 2: 6
    L'élément à chercher: 7
    L'élément n'apparait pas dans ce tableauL'élément à chercher 1er occurrance apparait à la position:4

    il s'affiche aussi la ligne suivante:
    L'élément à chercher 1er occurrance apparait à la position:4

    je crois que j'ai résolu le pb
    à la fin je dois mettre
    return tab pour return null
    0