1 public class version { 2 3 public static int compareVersion(String version1, String version2) throws Exception { 4 if (version1 == null || version2 == null) { 5 throw new Exception("compareVersion error:illegal params."); 6 } 7 String[] versionArray1 = version1.split("\.");//注意此处为正则匹配,不能用"."; 8 String[] versionArray2 = version2.split("\."); 9 int idx = 0; 10 int minLength = Math.min(versionArray1.length, versionArray2.length);//取最小长度值 11 int diff = 0; 12 while (idx < minLength 13 && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0//先比较长度 14 && (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {//再比较字符 15 ++idx; 16 } 17 //如果已经分出大小,则直接返回,如果未分出大小,则再比较位数,有子版本的为大; 18 diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length; 19 return diff; 20 } 21 22 public static void main(String [] args) throws Exception{ 23 System.out.println(compareVersion("1.2.3", "1.2.3")); 24 } 25 }