Tableau croissant ou décroissant

Résolu
edodo7 Messages postés 14 Date d'inscription vendredi 15 janvier 2016 Statut Membre Dernière intervention 28 février 2016 - 14 févr. 2016 à 18:45
edodo7 Messages postés 14 Date d'inscription vendredi 15 janvier 2016 Statut Membre Dernière intervention 28 février 2016 - 14 févr. 2016 à 22:09
Bonjour à tous,je dois reéaliser une méthode qui renvoie true si un tableau est classé par ordre croissant ou décroissant et false sinon. Le problème est que j'ai une erreur me disant qu'il me manque un return.
Voici mon code:
public static boolean ordered( int tableau[])
{
int i = 0;
if (tableau[0] < tableau[1])
{
while (i< tableau.length)
{
if (tableau[i] > tableau[i+1] && i < tableau.length -1)
{
return false;
}
if (i == tableau.length -1 && tableau[i-1] > tableau[i])
{
return false;
}
i++;
}
return true;
}
if (tableau[0] > tableau[1])
{
while (i < tableau.length)
{
if (tableau[i] < tableau[i+1] && i < tableau.length -1)
{
return false;
}
if (i == tableau.length -1 && tableau[i-1] < tableau[i])
{
return false;
}
i++;
}
return true;
}
}


Merci de votre aide.

1 réponse

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
14 févr. 2016 à 18:51
Il ne s'agit pas d'une erreur, mais d'un avertissement.

Que se passe-t-il si :
tableau[0] == tableau[1]
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
14 févr. 2016 à 19:07
Il s'agit bien d'une erreur, parce que si le cas que tu indiques se produit il n'y aura aucun return... or il en faut toujours un.
0
edodo7 Messages postés 14 Date d'inscription vendredi 15 janvier 2016 Statut Membre Dernière intervention 28 février 2016 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
Modifié par edodo7 le 14/02/2016 à 20:22
Je confirme qu'il s'agit bien d'une erreur et non d'un "warning". Cependant je vais traiter le cas où tableau[0] == tableau[1] pour voir si ça fonctionne.
0
edodo7 Messages postés 14 Date d'inscription vendredi 15 janvier 2016 Statut Membre Dernière intervention 28 février 2016 > edodo7 Messages postés 14 Date d'inscription vendredi 15 janvier 2016 Statut Membre Dernière intervention 28 février 2016
14 févr. 2016 à 20:34
J'ai donc fait la condition tableau[0] == tableau[1].
Fait étrange puisque quand j'ai essayé simplement en mettant un else, je n'ai eu aucun problème à la compilation mais à l'éxécution j'ai un message me disant qu'une exception a été lancée.
J'essaye donc avec un if(tableau[0] == tableau[1]) et je me retrouve avec l'erreur que j'avais au départ. Dans les deux cas donc, ça ne fonctionne pas
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127 > edodo7 Messages postés 14 Date d'inscription vendredi 15 janvier 2016 Statut Membre Dernière intervention 28 février 2016
14 févr. 2016 à 21:05
Si tu fais des successions de if, même s'ils paraissent a priori exclusifs.
Java estime qu'il est tout à fait plausible que la valeur de tes conditions (les valeurs des cases du tableau dans ton cas) ait pu changer entre l'évaluation de chacune des conditions. En conséquence, pour le compilateur il y a encore des cas potentiels où il n'y a pas de return !

Pour bien faire tu dois mettre des else à tes if et un return dans chaque condition afin d'être sûr de couvrir tout les cas.

if (tableau[0] < tableau[1]) {
    // ...
    return ?;
} else if (tableau[0] > tableau[1]) {
    // ...
    return ?;
} else { // if (tableau[0] == tableau[1])
    // ...
    return ?;
}
0
edodo7 Messages postés 14 Date d'inscription vendredi 15 janvier 2016 Statut Membre Dernière intervention 28 février 2016 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
14 févr. 2016 à 22:01
C'est fait. La compilation s'est bien passée, c'est l'éxécution qui pose problème: j'ai une exception qui s'est lancée.
0
Rejoignez-nous