2017-03-20 2 views
0

Ich bin im Basketball in die verknüpfte Tasche Remove-Methode übergeben. Ich überprüfe das gleiche Objekt, das ich bereits übergeben habe. Es wird falsch zurückgegeben.Ich kann nicht herausfinden, warum die Methode falsch zurückgibt

public static void removeMain(Scanner input,LinkedBag<Basketball> teamX){ 
     System.out.println("Please enter the team & rank of the object you want to remove."); 
     System.out.println("Team?"); 
     String team = input.nextLine(); 
     System.out.println("Rank?"); 
     int rank = input.nextInt(); 
     input.nextLine(); 

     if(teamX.remove(new Basketball(team, rank))){ 
      System.out.println("REMOVED!"); 
     }else{ 
      System.out.println("Team was not found due to it not being in the list."); 
     } 

    } 



public boolean remove(E target){ 

     boolean found = false; 
     int i = 0; 
     Node<E> pointer = head; 
     Node<E> previous = head; 

     while (pointer != null && !found){ 
      if((pointer.getData()).equals(target)){ 
       found = true; 
      }else{ 
       pointer = pointer.getLink(); 
       if(i>0){ 
        previous = previous.getLink(); 
       } 
       i++; 
      } 
     } 

     if(found){ 
      previous.setLink(pointer.getLink()); 
      numElements--; 
     } 



     return found; 
    } 

Dies ist die Basketball-Klasse

public class Basketball implementiert Vergleichbare

 public int compareTo(Basketball anotherTeam) 
throws ClassCastException 
{ 
    if (!(anotherTeam instanceof Basketball)) 
     throw new ClassCastException("A Car object expected."); 

    if (getRanking() < anotherTeam.getRanking()) 
     return -1; 
    else if (getRanking() > anotherTeam.getRanking()) 
     return 1; 
    else 
     return team.compareToIgnoreCase(anotherTeam.getTeam()); 
} 
+2

Bitte schreiben Sie den Code als Text, und nicht als Bild –

+0

Wie mache ich das –

+0

kopieren Sie den Text, und fügen Sie es in der Post. –

Antwort

0

haben Sie versucht, machen Costumized'equals' ovveride auf der BasketBall Klasse? wenn nicht, verwendet Java standardmäßig das von "Objekt" JavaDoc Object, das funktionieren kann oder nicht, je nachdem wie die Klasse gemacht wurde. Ein Beispiel versuchen stackoverflow post

EDIT neue Info

in Java getreu den Wert übersetzt 1 (und falsch 0), so kann es nie gleich sein, entweder zurückgeben 0 hier oder ein Gleichheits stattdessen überschreiben verwenden, wenn es Es ist nicht notwendig, ein sortiertes Ranking zu kennen

0

Anstatt compareTo() zu definieren, sollten Sie besser versuchen, equals() zu überschreiben, da Sie point.getData(). equals() in Ihrer remove() -Methode verwenden .

Oder Sie könnten Ihre eigene compareTo() in Ihrer remove() - Methode anstelle von equlas() verwenden.

Verwandte Themen