[JAVA] if(...) {...return;} Obligatoire ?
hyper
-
le père -
le père -
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
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
Configuration: Windows XP Internet Explorer 7.0
3 réponses
-
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. -
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 -
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