Java 如何使用compareTo方法比较两个字符串并返回按字典顺序排列的结果?

Java 如何使用compareTo方法比较两个字符串并返回按字典顺序排列的结果?,java,string,compare,getter,comparable,Java,String,Compare,Getter,Comparable,我试图使用compareTo方法来比较两个不同的名称。运行第一次尝试后,程序立即终止,不返回任何内容。如何将此compareTo方法修改为比较名称(名称n和名称n2)并返回结果(-1、1或0)?很明显,可以在显示中添加一个print语句(equal、before或after)进行比较。谢谢你的帮助 //First attempt public class Name implements Comparable<Name> { private String Name;

我试图使用compareTo方法来比较两个不同的名称。运行第一次尝试后,程序立即终止,不返回任何内容。如何将此compareTo方法修改为比较名称(名称n和名称n2)并返回结果(-1、1或0)?很明显,可以在显示中添加一个print语句(equal、before或after)进行比较。谢谢你的帮助

//First attempt
public class Name implements Comparable<Name> {

    private String Name;

    public Name(String string) {
        // TODO Auto-generated constructor stub
    }
    public String getName() {
        return Name;
    }
    public int compareTo(Name other) {

        if (getName().compareTo(other.getName()) < 0) {
            return -1;
        } else if (getName().compareTo(other.getName()) > 0) {
            return 1;
        } else if (getName().equals(other.getName())) {
            return 0;
        }
        return getName().compareTo(other.getName());
    }
    public static void main(String[] args) {
        Name n = new Name("jennifer");
        n.getName();
        Name n2 = new Name("paul");
        n2.getName();
    }
}




//second attempt
    public class Name implements Comparable<String> {

        private String Name;

        public String getName() {
            return Name;
        }
        public int compareTo(String other) {

            if (getName().compareTo(other.getName()) < 0) {
                return -1;
            } else if (getName().compareTo(other.getName()) > 0) {
                return 1;
            } else if (getName().equals(other.getName())) {
                return 0;
            }
            return getName().compareTo(other.getName());

        }
        public static void main(String[] args) {
            String Name = new String("jennifer");

            String other = new String("paul");
        }
    }
//第一次尝试
公共类名实现了可比性{
私有字符串名称;
公共名称(字符串){
//TODO自动生成的构造函数存根
}
公共字符串getName(){
返回名称;
}
公共整数比较(名称其他){
if(getName().compareTo(other.getName())<0){
返回-1;
}如果(getName().compareTo(other.getName())>0,则为else{
返回1;
}else if(getName().equals(other.getName())){
返回0;
}
返回getName().compareTo(other.getName());
}
公共静态void main(字符串[]args){
姓名n=新姓名(“詹妮弗”);
n、 getName();
名称n2=新名称(“保罗”);
n2.getName();
}
}
//第二次尝试
公共类名实现了可比性{
私有字符串名称;
公共字符串getName(){
返回名称;
}
公共整数比较(字符串其他){
if(getName().compareTo(other.getName())<0){
返回-1;
}如果(getName().compareTo(other.getName())>0,则为else{
返回1;
}else if(getName().equals(other.getName())){
返回0;
}
返回getName().compareTo(other.getName());
}
公共静态void main(字符串[]args){
字符串名称=新字符串(“jennifer”);
字符串其他=新字符串(“保罗”);
}
}
公共类名实现可比较{
私有字符串名称;
公共名称(字符串名称){
this.name=name;
}
公共字符串getName(){
返回名称;
}
公共整数比较(名称其他){
if(getName().compareTo(other.getName())<0){
返回-1;
}如果(getName().compareTo(other.getName())>0,则为else{
返回1;
}else if(getName().equals(other.getName())){
返回0;
}
返回getName().compareTo(other.getName());
}
公共静态void main(字符串[]args){
姓名n=新姓名(“詹妮弗”);
n、 getName();
名称n2=新名称(“保罗”);
n2.getName();
System.out.println(n.getName());
System.out.println(n2.getName());
系统输出println(n2.与(n)比较);
}
}
输出: 珍妮弗 保罗 一,

顺便说一下,因为每种编程语言都有自己的规则和约定,Java中的变量是这样的:

如果您选择的名称仅由一个单词组成,请将该单词拼写为 所有小写字母。如果它由多个单词组成, 将后面每个单词的第一个字母大写


不清楚你想做什么。为什么不
返回getName().compareTo(other.getName())
?所有的if都是用来做什么的?if是用来比较两个名称(字符串)是否相等(按字典顺序相等)、更小-调用方法的字符串按字典顺序排在第一位(在字典中排在第一位)还是更大(传递给compareTo方法的参数按字典顺序排在第一位)。根据字典顺序,这类似于一个人在字典中可能找到的顺序。你可以通过调用来获得所有这些。理解,只是想说明背景中发生了什么。谢谢你的帮助和澄清!
public class Name implements Comparable<Name> {

    private String name;

    public Name(String name) {
        this.name=name;
    }
    public String getName() {
        return name;
    }
    public int compareTo(Name other) {

        if (getName().compareTo(other.getName()) < 0) {
            return -1;
        } else if (getName().compareTo(other.getName()) > 0) {
            return 1;
        } else if (getName().equals(other.getName())) {
            return 0;
        }
        return getName().compareTo(other.getName());
    }
    public static void main(String[] args) {
        Name n = new Name("jennifer");
        n.getName();
        Name n2 = new Name("paul");
        n2.getName();
       System.out.println(n.getName());
      System.out.println(n2.getName());
       System.out.println(n2.compareTo(n));

    }
}
//First attempt
public class Name {

    public static void main(String[] args) {
        String n = new String("jennifer");
        String n2 = new String("paul");
        if (n.compareTo(n2) < 0) {
            System.out.println(n +" is before than " +n2);
        } else if (n.compareTo(n2) > 0) {
            System.out.println(n +" is after than " +n2);
        } else if (n.compareTo(n2) == 0) {
            System.out.println(n +" is equals to " +n);
        }
    }   
}
jennifer is before than paul