ArrayIndexOutfOfBoundsException 20

Résolu
Bonjour, j'ai un petit soucis avec une fonction qui ne veut pas me retourner -1 quand je trouve pas une valeur dans un tableau :

public static int rechercheSeq1(int [] t, int valeur){
	
		int i = 0;
		
		while((t[i] != valeur) && (i < t.length)){
		
			i++;
		}

		if(i == t.length){
		
			i = -1;
		}
		return i;
	}


Merci d'avance

5 réponses

  1. de rien ;)
    Bonne journée :) et pensez à mettre le sujet en résolu ;)
    1. il suffit d'appeler la fonction soit par getTemps() soit par NomClasse.getTemps()
      1. Je te remercie ça marche parfaitement bien =)

        et un autre soucis c'est l'utilisation de cette fonction :

        public static long getTemps() {
          Date d = new Date();
          return d.getTime();
            }


        Comment l'utilises-t-on dans le main ?
        1. Le problème dans le code est que l'on accède à un index qui n'existe pas.

          while((t[i] != valeur) && (i < t.length)){

          Il faut changer l'ordre de la condition en

          (i < t.length) && (t[i] != valeur)

          Explication : si le tableau contient 4 éléments, la taille sera 4 mais les index vont de 0 à 3. Or dans la première condition, on demande la valeur à l'index. Et tab[4] n'existe pas. Si on effectue en premier le test i < t.length, le test vaudra faux et la suite du test ne sera pas effectuée, donc ne renverra pas d'erreur comme on ne demande pas un index inexistant.