import java.util.Arrays;
import java.util.Scanner;
//必须实现Comparable接口
public class Word implements Comparable<Word>{
private final String word;
public String getWord() {
return word;
}
//构造器什么的无视吧
public Word(String word) {
if(word == null)
throw new NullPointerException("不可以创造空单词!");
this.word = word;
}
//实现compareTo方法.主要的排序思路在这里
@Override
public int compareTo(Word target) {
if(target == null)
return 1;
if(target.getWord().equalsIgnoreCase(getWord()))
return 0;
char[] selfLetters = getWord().toLowerCase().toCharArray();
char[] targetLetters = target.getWord().toLowerCase().toCharArray();
int selfLength = selfLetters.length;
int targeLength =targetLetters.length;
int minLength = Math.min(selfLength, targeLength);
for(int index = 0;index < minLength;index++){
if(selfLetters[index] > targetLetters[index]){
return 1;
}
else if (selfLetters[index] < targetLetters[index]){
return -1;
}
continue;
}
return selfLength > targeLength ? 1 : -1 ;
}
//重写 ToString 方法以便打印输出
@Override
public String toString() {
return word;
}
//主方法.用来查看效果
public static void main(String[] args) {
int size = 5;//测试用的数组长度(单词数);
// 创造一个Word的数组用来保存输入的单词
Word[] words = new Word[size];
Scanner sc = new Scanner(System.in);
for(int i=0;i<size;i++)
{
System.out.println("请输入第"+(i+1)+"个单词");
words[i] = new Word(sc.nextLine());
}
sc.close();//关闭流
System.out.println("排序结果为:");
//使用Arrays.sort方法排序,sort对自动调用你的compareTo方法来比较
Arrays.sort(words);
//打印出结果
System.out.println(Arrays.toString(words));
}
}
这是我刚写的。测试结果还可以。逻辑可能不是很严谨 不过作为作业应该应付足够了