比较目录中两个学生的姓氏

时间:2015-02-04 02:31:18

标签: java

我正在尝试比较目录中两个学生的姓氏,我是通过覆盖compareTo方法来做到这一点的。以下代码并没有完全反映出我想在这里做什么,返回值现在只是一个占位符。它说它不会编译,因为它无法在类String中找到subString(int)的符号。

for (int i = 0; i < this.getLastName().length(); i++) {
     if (!this.getLastName().subString(i).equals(s.getLastName().subString(i))) {
        return 1;
     }
  }

更新:我很感激你们都指出我的白痴在灵敏度上(不是真的,谢谢)这里是我在代码中所处位置的更新。我想我可以从这里开始。

@Override
public int compareTo(Student s) {
  for (int i = 0; i < this.getLastName().length(); i++) {
     if (!this.getLastName().equals(s.getLastName())) {
        for(int j = 0; j < this.getLastName().length() || j < s.getLastName().length(); j++) {
           if (this.getLastName().charAt(j) < s.getLastName().charAt(j)) {
              return 1;
           }
           else {
              return -1;
           }
        }
     }

  }

再看一遍,我甚至不需要那个第一次循环。

这是完成的方法。

@Override
public int compareTo(Student s) {

  if (!this.getLastName().equals(s.getLastName())) {
     for(int j = 0; j < this.getLastName().length() || j < s.getLastName().length(); j++) {
        if (this.getLastName().charAt(j) < s.getLastName().charAt(j)) {
           return 1;
        }
        else if (this.getLastName().charAt(j) > s.getLastName().charAt(j)) {
           return -1;
        }
     }
  }

  if (!this.getFirstName().equals(s.getFirstName())) {
     for (int i = 0; i < this.getLastName().length() || i < s.getLastName().length(); i++) {
        if (this.getFirstName().charAt(i) < s.getFirstName().charAt(i)) {
           return 1;
        }
        else if (this.getFirstName().charAt(i) > s.getFirstName().charAt(i)) {
           return -1;
        }
     }
  }
  return 0;

}

2 个答案:

答案 0 :(得分:0)

比较两个Java字符串的简单方法是使用String.compareTo(String)。你不需要自己使用循环来实现它。 (或者至少,不是在现实世界中。)

如果您想按姓氏排序,请输入名字:

call `compareTo` on the last name string 
 - if the result is non zero, return it
 - if the result is zero, compare the first name string.

我会让你弄清楚剩下的......因为这显然是一次学习练习&#34;。

答案 1 :(得分:0)

不确定为什么要重新发明轮子。斯蒂芬C试图指出你可以达到这样的结果:

@Override
public int compareTo(Student that) {
    int compare = this.getLastName().compareTo(that.getLastName());
    if (compare == 0) {
        compare = this.getFirstName().compareTo(that.getFirstName());
    }
    return compare;
}