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 }