Tableau croissant ou décroissant [Résolu]

edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention - 14 févr. 2016 à 18:45 - Dernière réponse : edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention
- 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.
Afficher la suite 

7 réponses

Répondre au sujet
NHenry 14132 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 14 févr. 2016 à 18:51
0
Utile
6
Il ne s'agit pas d'une erreur, mais d'un avertissement.

Que se passe-t-il si :
tableau[0] == tableau[1]
edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention > KX 15366 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 14 févr. 2016 à 20:21
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.
edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention > edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention - 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
KX 15366 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention > edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention - 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 ?;
}
edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention > KX 15366 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 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.
edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention > edodo7 14 Messages postés vendredi 15 janvier 2016Date d'inscription 28 février 2016 Dernière intervention - 14 févr. 2016 à 22:09
C'est finalement reglé.
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.