2015-09-26 140 views
-3

此程序会为CompareTo方法错误

-1 
1 
-12 

为什么-12输出?它应该返回只有1,-1或0的输出作为compareTo方法用于

class psp 
{ 
    public static void main(String gg[]) 
    { 
    String a="AMIT"; 
    String b="BA"; 
    String c="AB"; 
    String d="ANURAG"; 
    System.out.println(a.compareTo(b)); 
    System.out.println(b.compareTo(c)); 
    System.out.println(c.compareTo(d)); 
    } 
} 
+1

它返回'字典顺序较小的数字。 – Manwal

+1

来自doc .... _“将此对象与指定的对象进行比较,返回负整数,零或正整数,因为此对象小于,等于或大于指定的对象。”_你在哪里读到它应该是-1或1? –

+1

你会一直想阅读文档。 –

回答

2

从javadocs中:

返回负整数,零或正整数,因为这 目的是小于,等于或大于指定的对象。

因此,它可以返回任意整数,而不仅仅是-1,0,1

+0

Thanx我现在明白了 –

0

如果你看到的String#compareTo(String)的源代码是由字符字符串的字符进行比较,如果系统字符不相等,则返回字符,以便检查每个差异性之探源案件。

"AMIT".compareTo("BA")

  1. A != B返回A - B(65 - 66)即-1

"BA".compareToAb("AB")

  1. B != A返回B - A(66 - 65),即1

"AB".compareToAb("ANURAG")

  1. A == A条件真检查下一个字符。
  2. B != N回报B - N(66-78)返回-12
0

它不会给输出1,-1,0如因的compareTo()方法字典顺序比较两个字符串。

s1.compareTo(s2) 

1. compareTo()返回0,如果两个s1 lexicagraphically等于s2。 2.如果s2字符串按字典顺序大于s1字符串,则comapareTo()返回小于0的值。 3如果s2字符串按字典顺序小于s1,则compareTo()返回大于0的值字符串