Comment retourner rien d'une fonction renvoyant la valeur?
J'ai un arbre de recherche binaire, et je veux supprimer un nœud.
J'ai besoin d'obtenir de ses parents, alors j'ai écrit une fonction:
private BSTreeNode<T> getParent(BSTreeNode<T> root, BSTreeNode<T> node) {
if(root == null)
return null;
if(node.element().lessThan(root.element())) {
if(root.getLeft() != null && root.getLeft().element().equal(node.element()))
return root;
else
getParent(root.getLeft(), node);
} else {
if(root.getRight() != null && root.getRight().element().equal(node.element()))
return root;
else
getParent(root.getRight(), node);
}
}
Contrairement au C/C++, Java me donne l'erreur suivante:
This method must return a result of type BSTreeNode<T>
Il me force à retourner une valeur dans la dernière ligne de la fonction.
Comment puis-je résoudre ce problème dans le cadre de ma fonction?
Utilisation
et utiliser les paramètres?
Je ne sais pas, c'est une partie de votre conception. Le point est votre méthode doit toujours retourner quelque chose si votre type de retour est différent de celui
Compilateurs C et C++ ne peut pas vous forcer à retourner une valeur non-nulle types de retour, mais cela ne veut pas dire qu'il est "autorisé". Si la fonction se termine sans un retour (ou exception), le résultat est indéfini. Java est tout particulièrement vif sur l'application de cette règle.
Oh, ma faute. J'ai confondu une minute que j'ai de la valeur de retour dans tout le reste-si les blocs. merci beaucoup!
return getParent...
et utiliser les paramètres?
Je ne sais pas, c'est une partie de votre conception. Le point est votre méthode doit toujours retourner quelque chose si votre type de retour est différent de celui
void
.Compilateurs C et C++ ne peut pas vous forcer à retourner une valeur non-nulle types de retour, mais cela ne veut pas dire qu'il est "autorisé". Si la fonction se termine sans un retour (ou exception), le résultat est indéfini. Java est tout particulièrement vif sur l'application de cette règle.
Oh, ma faute. J'ai confondu une minute que j'ai de la valeur de retour dans tout le reste-si les blocs. merci beaucoup!
OriginalL'auteur Billie | 2013-12-16
Vous devez vous connecter pour publier un commentaire.
Votre fonction n'est pas d'avoir un retour pour chaque circonstance. Vous avez:
Que pensez-vous de la déclaration si elle n'est pas null, et va à la finale d'autre? Rien n'est renvoyé.
Vous pouvez soit
return getParent...
dans l'instruction else. oureturn null
à la fin de la fonction (et non pas dans une instruction if ou else)Je vois souvent des code comme pour couvrir les cas de ni si la déclaration de retourner une valeur.
OriginalL'auteur DoubleDouble
Vous devriez être bon avec ce:
OriginalL'auteur Samuel
Ajouter return null; déclaration à la fin de la méthode .
Je pense que cette déclaration sera inaccessible dans les cas normaux, mais d'ajouter que c'est juste pour corriger l'erreur de compilation et essayez ce qui va arriver.
null
.Aucun homme , Vérifiez bien l'instruction de retour ne s'exécutera que si toutes les conditions de l'échec et c'est clairement la même que la réponse que vous avez pris en charge ci-dessus . Merci donc de retirer le bas de voter 🙂
OriginalL'auteur Hussein Terek