public int compare(String s, String s1)
{
int i = s.length();
int j = s1.length();
int k = 0;
for (int l = 0; k < i && l < j; l++)
{
char c = s.charAt(k);
char c1 = s1.charAt(l);
if (c != c1)
{
c = Character.toUpperCase(c);       //(1)
c1 = Character.toUpperCase(c1);
if (c != c1)
{
c = Character.toLowerCase(c);
c1 = Character.toLowerCase(c1);//(2)
if (c != c1)
return c - c1;
}
}
k++;
} return i - j;
}问题:(1)处字符大写如果不相等,(2)处小写会相等吗?求教具体解释

解决方案 »

  1.   

    public int compare(String s, String s1) {
        String ss1=s.toUpperCase();
        String ss2=s1.toUpperCase() ;
        return ss1.compareTo(ss2);
    } 简单点就完了.
      

  2.   

    这是String源码,我看不懂,请教!
      

  3.   

    这段代码在String里的内部类CaseInsensitiveComparator里面
    是忽略字符大小写的比较
      

  4.   

    jdk 6 源码中看到这几行注释:// Unfortunately, conversion to uppercase does not work properly
    // for the Georgian alphabet, which has strange rules about case
    // conversion.  So we need to make one last check before
    // exiting.
      

  5.   

    关键就在于 Georgian alphabet
    这个什么乔治字母表 转换为大写比较对它不管用。。
      

  6.   

    再加上最后一句 return i-j; 而不是return 0;
    三重保险