2015-04-30 1 views
-1

J'essaie d'utiliser compareTo avec un entier mais il ne me le permet pas. Aidez-moi, s'il vous plaît! Voici mon code:compareTo avec integer

public int compareTo(Book book) 
    { 
     if (this.author.compareToIgnoreCase(book.author) < 0) return -1; 
     if (this.author.compareToIgnoreCase(book.author) > 0) return 1; 
     if (this.author.equalsIgnoreCase(book.author)) 
     { 
      if (this.numOfPages.compareTo(book.numOfPages) < 0) return -1; 
      else if (this.lyrics.compareToIgnoreCase(song.lyrics) > 0) return 1; 
      else if (this.lyrics == song.lyrics) return 0; 
      else return 1; 
     } 
     return 0; 
    } 
+0

Quels sont les types de données de this.numOfPages et book.numOfPages etc? – BretC

+0

Ils sont tous les deux 0ts – user3583313

+0

S'ils sont petits 'int's, vous pourriez avoir besoin de faire' new Integer (this.numOfPages) .compareTo (book.numOfPages) 'peut-être? – BretC

Répondre

0

Je devine que vous définissez comme numOfPages:

int numOfPages; //primitive integer 

si vous utilisez plutôt le repsentation objet de int, il devrait fonctionner.

par exemple:

Integer numOfPages; //object integer 
+0

Ou ... vous savez ... vous pouvez simplement faire numOfPages NoseKnowsAll

+2

elle essaie d'utiliser la méthode ** compareTo **, évidemment en utilisant == c'est mieux, mais si vous insistez pour utiliser ** compareTo ** alors c'est une façon de le faire. – nafas