2015-02-07 30 views
-1

我試圖做這個練習:我有一個學生有一個名字,姓氏和一個數字,我想通過數字命令學生..如果我想爲了通過名字或姓氏,似乎很容易,但用數字我不知道該怎麼做.. 這是我的代碼:JAVA如何在本練習中比較使用compareTo的整數

public class Student implements Comparable<Student> { 
private String name; 
private String surname; 
private int number; 


public Student(String n, String s, int m) { 
    name = n; 
    surname = s; 
    number = m; 
} 

public String getName() { 
    return name; 
} 

public String getSurname() { 
    return surname; 
} 

public int getmatricola() { 
    return number; 
} 
//CompareTo Name 
public int compareTo(Student otherObject) { 
    return name.compareTo(otherObject.getName()); 
} 
} 
//TESTER 
ArrayList<Student> list = new ArrayList<Student>(); 
System.out.print("\n ORDER BY NUMBER \n"); 

    Collections.sort(list); 
    for (int i = 0; i < list.size(); i++) { 
     Student s = list.get(i); 
     String std = s.getAll(); 
     System.out.println(std); 


    } 
+0

它實際上比較容易通過數字進行比較。 – Maroun 2015-02-07 10:03:31

+0

['Integer.compare(int,int)'](http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#compare(int,%20int))可以幫助 – 2015-02-07 10:04:59

回答

1

您可以執行如下操作:

public int compareTo(Student otherObject) { 
    return Integer.compare(this.number, otherObject.getNumber()); 
} 
+0

非常感謝你:) – 2015-02-07 10:12:22

+0

如果我想實現compareTo和compareTo的名字,當我調用方法時如何區分它們? – 2015-02-07 10:40:21

+0

@FilomenaDelSorbo你不能這樣做。由於類型擦除,'class'只能擴展通用接口的一個實例。你將不得不使用外部的「比較器」。 – 2015-02-07 10:44:10

0

那麼,爲什麼你數是int,你可以在。減去數量和返回的區別:

public class Student implements Comparable<Student> { 
private String name; 
private String surname; 
private int number; 


public Student(String n, String s, int m) { 
    name = n; 
    surname = s; 
    number = m; 
} 

public String getName() { 
    return name; 
} 

public String getSurname() { 
    return surname; 
} 

public int getmatricola() { 
    return number; 
} 
//CompareTo number 
public int compareTo(Student otherObject) { 
    return number - otherObject.getmatricola(); 
} 
} 
+0

這是一個**非常**的常見錯誤,與minus可以溢出相比。不要這樣做,這是一個不好的習慣。 – 2015-02-07 10:08:40

+0

@BoristheSpider你可以添加一個例子。 – Jens 2015-02-07 10:10:09

+0

嘗試將'Integer.MAX_VALUE'與'Integer.MIN_VALUE'進行比較。 – 2015-02-07 10:10:51

0

嘗試這樣做...應該工作 //的CompareTo名稱 公衆詮釋的compareTo(學生otherObject){ 如果(this.getmatricola()> otherObject.getmatricola()) 返回1; else return -1; }