不使用其他方法制作MY OWN s1.compareTo(s2)方法

时间:2018-04-26 22:34:17

标签: java methods compareto

我应该自己做比较方法。以下是说明

“其中s1和s2是字符串,b是整数类型,如果两个字符串相等,则b将存储0;如果s1小于s2,则b将存储负值;如果s1大于s2,则存储正值。 “

我制作的程序不起作用,我不知道为什么,有一点是如果数组彼此相等,程序就会失败,即使它们没有,程序也不起作用。 谢谢你的帮助...

public class CompareCharMethod {
    public static void main(String[] args) {
            // TODO Auto-generated method stub
        char[] s1 = new char[] {'a', 'p', 'p', 'l', 'e'};
        char[] s2 = new char[] {'o', 'r', 'a', 'n', 'g', 'e'};
        int answer = CompareTo(s1, s2);
        System.out.println(answer);
    }

    public static int CompareTo(char[] s1, char[]s2)
    {
        if (s1==s2) {
            return 0;
        } else {
            int i=0;
            do { 
                if (s1[i] <s2[i]) {
                    return -1;
                } else if (s1[i] >s2[i]) {
                    return 1;
                } else {
                    i++;
                }
            } while (s1[i]==s2[i]);
        }
        return 999;
    }
}

2 个答案:

答案 0 :(得分:-1)

这应该是你要找的我把它解释为词典顺序。

public static int CompareTo(char[] s1, char[]s2)
  {
      if (s1==s2)
        return 0;
      int n = s1.length>=s2.length ? s2.length : s1.length;
      for(int i=0;i<n;i++){
        if(s1[i]<s2[i])
          return -1;
        else if(s1[i]>s2[i])
          return 1;
      }
      if(s1.length==s2.length)
          return 0;
      return s1.length>s2.length ? 1 : -1;
  }

答案 1 :(得分:-3)

你可以试试这个:

public static void main(String[] args) {
    String s1 = "apple";
    String s2 = "orange";
    int answer = myCompareTo(s1.toCharArray(), s2.toCharArray());
    System.out.println(answer);
}

public static int myCompareTo(char[] s1, char[]s2) {
    int len1 = s1.length;
    int len2 = s2.length;
    int lim = Math.min(len1, len2);
    char v1[] = s1;
    char v2[] = s2;

    int k = 0;
    while (k < lim) {
        char c1 = v1[k];
        char c2 = v2[k];
        if (c1 != c2) {
            return c1 - c2;
        }
        k++;
    }
    return len1 - len2;
}