[JAVA] if(...) {...return;} Obligatoire ?

Fermé
hyper - 1 janv. 2010 à 16:45
 le père - 25 janv. 2010 à 13:46
Bonjour,

dans l'implémentation d'une des méthode que je bidouille, j'ai plusieur if successif mais pas imbriqué.

mon code --------------------------

public void addSort (String toAdd) {

Node aPlacer = new Node ();
aPlacer.element = toAdd;

if (first==null) {first=aPlacer;return;}

if (toAdd.compareTo(first.element)<0){
aPlacer.next = first;
first = aPlacer;return;}


if (toAdd.compareTo(first.element)>=0){
Node current=new Node ();
current=first;
try {
while (toAdd.compareTo(current.next.element)>=0){
current=current.next;}

aPlacer.next = current.next;
current.next = aPlacer;return;
}catch (NullPointerException e) {current.next=aPlacer;}
}
}

------------------

sans ces return placés en fin de if,...ça foire.

Le programme exécute les if succèssivement !? Comment cela ce fait-il ?

Pouvez-vous m'éclairer ?

merci
A voir également:

3 réponses

BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 27
1 janv. 2010 à 17:00
Bonjour Hyper,

Le return nne doit pas être utilisé puisque ta méthode ne retourne rien (void).

Le probème viendrait plutôt de là :

first=aPlacer;

Mais on ne peut difficilement t'aider puisque l'on ne sait pas comment est implémenté Node ... et d'où vient first ...

Bonne année 2010.
0
delta_danger
25 janv. 2010 à 10:10
J'pense que c'que tu cherches en fait c'est le else if :



if (first==null) {first=aPlacer;}

else if (toAdd.compareTo(first.element)<0){
aPlacer.next = first;
first = aPlacer;}

else if (toAdd.compareTo(first.element)>=0){
Node current=new Node ();
current=first;
try {
while (toAdd.compareTo(current.next.element)>=0){
current=current.next;}

aPlacer.next = current.next;
current.next = aPlacer;
}catch (NullPointerException e) {current.next=aPlacer;}

De cette manière, si le premier if est lu, il ne passera pas dans les autres
0
Bonjour

Le problème venait de là :
first = aPlacer
Quand tu fais ça, tu changes le first, qui devient la même chose que toAdd

donc dans le test suivant if (toAdd.compareTo(first.element)>=0) il y a égalité et il te rend 0 -> vrai

Le return et le else sont deux moyens de t'en sortir aussi valables l'un que l'autre, à toi de choisir
0