先逐位比较,如果都相等,则看哪个字符串长,将长的剩下的部分再继续和另外一个字符串比较,我这里运用递归。但是不知道为什么,结果有一点点不对,这是为什么呢???
public class CombineNumber {
public static void main(String args[]){
String[] inputs={"3","83","8","13","1"};
ArrayList a=new ArrayList();
for(int i=0;i<inputs.length;i++)
a.add(inputs[i]);
a.sort(new Comparator(){
public int compare(Object o1, Object o2) {
String s1=(String)o1;
String s2=(String)o2;
int len1=s1.length();
int len2=s2.length();
int k=len1-len2;
for(int i=0;i<(k>0?len2:len1);i++){
if(s1.charAt(i)>s2.charAt(i))
return 1;
if(s1.charAt(i)<s2.charAt(i))
return -1;
}
if(s1.length()>s2.length()){
//String str1;
s1=s1.substring(len2);
compare(s1,s2);
}
if(s1.length()<s2.length()){
// String str2;
s2=s2.substring(len1);
compare(s1,s2);
}
return 0;
}
});
a.toString();
System.out.println(a);
}
}
排序出来的结果是[13, 1, 3, 83, 8],正确的应该是1 13 3 83 8 ,相当于13和1排序的时候出错了。。。错在哪里???