package shousi;
/**
* 版本号比较
* 如果version1大于version2,返回值为1,等于为0,小于为-1
* 例如:1.2.4和1.1.100比较大小,应是前者大于后者
* split 方法入参为正则匹配表达式,不能用"."("."
* 在正则表达式里匹配任何值),需要用"\\.",才算是按点号分割
*/
public class Test18 {
public static int compareVersion(String v1,String v2) throws Exception {
if(v1 == null || v2 == null) {
throw new Exception("bad version");
}
String[] arr1 = v1.split("\\.");//注意此处为正则匹配,不能用"."
String[] arr2 = v2.split("\\.");
int index = 0;
int diff = 0;
int minLen = Math.min(arr1.length, arr2.length);
while(index < minLen
&&(diff = arr1[index].length() - arr2[index].length()) == 0//比较长度
&&(diff = arr1[index].compareTo(arr2[index])) == 0){//比较字符
index++;
}
//如果已经分出大小,则直接返回,如果未分出大小,则再比较位数,有子版本的为大;
diff = (diff != 0) ? diff : arr1.length - arr2.length;
return diff;
}
public static void main(String[] args) throws Exception {
int res = compareVersion("1.3.20.8","1.3.8");
System.out.println(res);
}
}
java实现比较版本号
最新推荐文章于 2024-06-19 09:47:07 发布