比如
1.1.1>1.0.10
1.10.1>1.2.10

解决方案 »

  1.   

    int compare(String s1, String s2) {
        String[] v1 = s1.split("\\.");
        String[] v2 = s2.split("\\.");
        if (v1.length < v2.length) { //如果版本.长度不一样,后面的缺省为0,如果保证长度一样,这里可以不需要
            String[] t = new String[v2.length];
            System.copyarray(v1, 0, t, 0, v1.length);
            for (int i=0; i<t.length; i++) {t[i]="0";}
            v1 = t;
        } else if (v1.length > v2.length) {
            String[] t = new String[v1.length];
            System.copyarray(v2, 0, t, 0, v2.length);
            for (int i=0; i<t.length; i++) {t[i]="0";}
            v2 = t;
        }    for (int i=0; i<v1.length; i++) {
            int n1 = Integer.valueOf(v1[i]).intValue();
            int n2 = Integer.valueOf(v2[i]).intValue();
            if (n1 != n2) {
                return (n1 - n2); //大于0则s1版本大,小于0则s2版本大
            }
        }
        return 0; //相等
    }
      

  2.   

    上面的for (int i=0; i<t.length; i++) {t[i]="0";}
    改为
    for (int i=v1.length; i<t.length; i++) {t[i]="0";} //或v2.length
      

  3.   

    package houlei.csdn.text;public class VersionComparator { private VersionComparator(){}

    public static int compare(String ver1,String ver2){
    String v1 [] = ver1.split("\\.");
    String v2 [] = ver2.split("\\.");
    return compare(v1,v2,0);
    }
    private static int compare(String[] v1, String[] v2, int i) {
    if(i<v1.length && i<v2.length){
    int c = Integer.valueOf(v1[i].trim()).compareTo(Integer.valueOf(v2[i].trim()));
    if(c!=0){
    return c;
    }
    return compare(v1, v2, ++i);
    }else if(v1.length==v2.length){
    return Integer.valueOf(v1[--i].trim()).compareTo(Integer.valueOf(v2[i].trim()));
    }else if(i>=v1.length){
    return -1;
    }
    return 1;
    }}
      

  4.   

    int compare(str1, str2) {
         String v1[] = ver1.split("\\.");
         String v2[] = ver2.split("\\.");
         return compare(v1, v2, 0);
    }
    int compare(String[] str1, String[] str2, int i) {
         if (str1.length > i) {
             int i1 = Integer.parseInt(str1[i]);
             int i2 = Integer.parseInt(str2[i]);
             if (i1 < i2) {
                 return -1;
             } else if (i1 > i2) {
                 return 1;
             } else {
                 i++;
                 compare(str1, str2, i);
             }
         } else {
              return 0;
         }
    }
      

  5.   

    算了,去掉数组补长吧
    int compare(String s1, String s2) {
        String[] v1 = s1.split("\\.");
        String[] v2 = s2.split("\\.");
        int maxLen = (v1.length>v2.length) ? v1.length : v2.length;
        for (int i=0; i<maxLen; i++) {
            if (i<v1.length && i<v2.length) {
                int n1 = Integer.valueOf(v1[i]).intValue();
                int n2 = Integer.valueOf(v2[i]).intValue();
                if (n1 != n2) {return (n1-n2);}
            } else  {
                int n = (v1.length>v2.length) ? Integer.valueOf(v1[i]).intValue() : Integer.valueOf(v2[i]).intValue()*(-1);
                if (n != 0) {return n;}
            }
        }
        return 0; //相等
    }
      

  6.   

    /*
    比如
    1.1.1>1.0.10
    1.10.1>1.2.10
    */
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Test{
    public static void main(String[] args){
    String str1 = "1.10.1";
    String str2 = "1.12.10"; int result = compare(str1,str2); if(result > 0){
    System.out.println(str1 + " > " + str2);
    }else if(result < 0){
    System.out.println(str1 + " < " + str2);
    }else{
    System.out.println(str1 + " == " + str2);
    }
    } private static int compare(String str1,String str2){
    String regex = "[^.]+";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher1 = pattern.matcher(str1);
    Matcher matcher2 = pattern.matcher(str2);

    int result = 0;
    while(matcher1.find() && matcher2.find()){
    result = compareStr(matcher1.group(),matcher2.group());
    if(result != 0){
    return result;
    }
    } return compareStr(str1,str2);
    } private static int compareStr(String str1,String str2){
    //长度长的为大
    if(str1.length() > str2.length()){
    return 1;
    } if(str2.length() > str1.length()){
    return -1;
    } //长度相同时候采用正常比较 return str1.compareTo(str2);
    }
    }
      

  7.   

    为啥要弄那么麻烦嘛,这也就是比较两个字符串的大小,
    System.out.println("1.1.1".compareTo("1.0.10"));
    System.out.println("1.10.1".compareTo("1.20.10"));
    这样就能知道哪个版本大了嘛。 返回1为大,-1为小,0相等。
      

  8.   

    String str1 = "1.1.1";
    String str2 = "1.0.10";
    List l = new ArrayList();
    l.add(str1);
    l.add(str2);
    Collections.sort(l);
    Collections.reverse(l);
    System.out.print(l.get(0)+">"+l.get(1));
      

  9.   

    直接比较字符串,是不行的。
    楼上可以试试
    System.out.println("1.1".compareTo("1.10"));
    System.out.println("1.1".compareTo("1.2"));
    两者的结果应该不一样,呵呵。
      

  10.   

    System.out.println("1.1".compareTo("1.10"));
    System.out.println("1.1".compareTo("1.2"));
    结果一样.都是前者比后者小