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

hyper -  
 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
Configuration: Windows XP Internet Explorer 7.0

3 réponses

  1. BadGuitarist Messages postés 373 Statut Membre 27
     
    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
  2. delta_danger
     
    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
  3. le père
     
    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