2015-02-07 89 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; }