ArrayIndexOutfOfBoundsException 20

Résolu
Xelo-arx Messages postés 12 Statut Membre -  
fromagedebikette Messages postés 925 Statut Membre -
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. fromagedebikette Messages postés 925 Statut Membre 190
     
    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.
    0
  2. Xelo-arx Messages postés 12 Statut Membre
     
    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 ?
    0
  3. fromagedebikette Messages postés 925 Statut Membre 190
     
    il suffit d'appeler la fonction soit par getTemps() soit par NomClasse.getTemps()
    0
  4. Xelo-arx Messages postés 12 Statut Membre
     
    Merci beaucoup !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fromagedebikette Messages postés 925 Statut Membre 190
     
    de rien ;)
    Bonne journée :) et pensez à mettre le sujet en résolu ;)
    0