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. 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.
    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. il suffit d'appeler la fonction soit par getTemps() soit par NomClasse.getTemps()
        1. de rien ;)
          Bonne journée :) et pensez à mettre le sujet en résolu ;)