我用了compareTo()当时它好像只能比较数字,如果是非数字怎么比较啊,我不比较长度,我是要一个一个的字符进行比较.那位大哥给解决一下,小弟将感激不尽.

解决方案 »

  1.   

    没,string的 compareTo就是比较字母的,你搞错了。
      

  2.   

    Java的字符串比较大小,只能用compareTo返回 -1 0 1
    分别表示小于 等于 大于。
      

  3.   

    /**
         * Compares two strings lexicographically.
         * The comparison is based on the Unicode value of each character in
         * the strings. The character sequence represented by this
         * <code>String</code> object is compared lexicographically to the
         * character sequence represented by the argument string. The result is
         * a negative integer if this <code>String</code> object
         * lexicographically precedes the argument string. The result is a
         * positive integer if this <code>String</code> object lexicographically
         * follows the argument string. The result is zero if the strings
         * are equal; <code>compareTo</code> returns <code>0</code> exactly when
         * the {@link #equals(Object)} method would return <code>true</code>.
         * <p>
         * This is the definition of lexicographic ordering. If two strings are
         * different, then either they have different characters at some index
         * that is a valid index for both strings, or their lengths are different,
         * or both. If they have different characters at one or more index
         * positions, let <i>k</i> be the smallest such index; then the string
         * whose character at position <i>k</i> has the smaller value, as
         * determined by using the &lt; operator, lexicographically precedes the
         * other string. In this case, <code>compareTo</code> returns the
         * difference of the two character values at position <code>k</code> in
         * the two string -- that is, the value:
         * <blockquote><pre>
         * this.charAt(k)-anotherString.charAt(k)
         * </pre></blockquote>
         * If there is no index position at which they differ, then the shorter
         * string lexicographically precedes the longer string. In this case,
         * <code>compareTo</code> returns the difference of the lengths of the
         * strings -- that is, the value:
         * <blockquote><pre>
         * this.length()-anotherString.length()
         * </pre></blockquote>
         *
         * @param   anotherString   the <code>String</code> to be compared.
         * @return  the value <code>0</code> if the argument string is equal to
         *          this string; a value less than <code>0</code> if this string
         *          is lexicographically less than the string argument; and a
         *          value greater than <code>0</code> if this string is
         *          lexicographically greater than the string argument.
         */
        public int compareTo(String anotherString) {
    int len1 = count;
    int len2 = anotherString.count;
    int n = Math.min(len1, len2);
    char v1[] = value;
    char v2[] = anotherString.value;
    int i = offset;
    int j = anotherString.offset; if (i == j) {
        int k = i;
        int lim = n + i;
        while (k < lim) {
    char c1 = v1[k];
    char c2 = v2[k];
    if (c1 != c2) {
        return c1 - c2;
    }
    k++;
        }
    } else {
        while (n-- != 0) {
    char c1 = v1[i++];
    char c2 = v2[j++];
    if (c1 != c2) {
        return c1 - c2;
    }
        }
    }
    return len1 - len2;
        }
    要明白就自己看看源代码
      

  4.   

    String中compaerTo()方法就是用来比较两个字符串的。通过比较各个相应位字符的Unicode编码值来判断大小,若两个字符串完全相同则返回0。看下面一个例子就知道了:public class StringCompare {
    public static void main(String[] args) {
    String s = "abc";
    String s1 = "bca";
    String s2 = "cab";
    String s3 = "abc";
    System.out.println(s.compareTo(s1));
    System.out.println(s.compareTo(s2));
    System.out.println(s.compareTo(s3));
    System.out.println(s2.compareTo(s1));
    }
    }
    打印结果分别是:
    -1
    -2
    0
    1
      

  5.   

    compareTo()可以比较字符串的额
      

  6.   

    public class JavaTest {
    String str1 = "abcdefg";
    String str2 = "gfedcba";
    public static void main(String args[]){
    JavaTest javaTest = new JavaTest();
    int flag = javaTest.str1.compareTo(javaTest.str2);
    if(flag==0){
    System.out.println("str1 = str2"+"----str1.compareTo(str2) = "+flag);
    }else if(flag>0){
    System.out.println("str1 > str2"+"----str1.compareTo(str2) = "+flag);
    }else{
    System.out.println("str1 < str2"+"----str1.compareTo(str2) = "+flag);//被执行,打印str1 < str2----str1.compareTo(str2) = -6
    }
    }}
      

  7.   

    public int compareTo(String anotherString)按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象在参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只有在方法 equals(Object) 返回 true 时才返回 0。 
      

  8.   

    我记得考SCJP的时候有一道题是比较字母大小:
    结论,字母的先后顺序和大小写决定字母的大小
      

  9.   

    比较也可以用equals,来比较 他们是否相等。
      

  10.   

    使用String里面的方法就行了,如果更复杂就需要实现其他接口了
      

  11.   

    重写compareto()方法  你想怎么比较 在方法里面就怎么写