博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java实现版本号的比较
阅读量:4572 次
发布时间:2019-06-08

本文共 1332 字,大约阅读时间需要 4 分钟。

  之前比较客户端版本号,一直用的是String.compareTo,知道出现bug之后才明白了它的不完善地方。它的比较方式是按照字符串的比较来执行的,所以它有不正确的地方。举个例子,之前客户端版本号为:9.9.9,而服务器端最新的客户端版本号为:10.0.1,虽然10.0.1明显高于9.9.9,但是按照compareTo方法,这个9.9.9是大于10.0.1的,导致客户端版本号比较错误。下面是分隔后的版本号转化为Integer值来比较,不过,还是首先比较的个数

1 public static int compareVersion(String version1, String version2) { 2     if (version1.equals(version2)) { 3         return 0; 4     } 5     String[] version1Array = version1.split("//."); 6     String[] version2Array = version2.split("//."); 7     int index = 0; 8     //获取最小长度值 9     int minLen = Math.min(version1Array.length, version2Array.length);10     int diff = 0;11     //循环判断每位的大小12     while (index < minLen && (diff = Integer.parseInt(version1Array[index]) - Integer.parseInt(version2Array[index])) == 0) {13         index++;14     }15     if (diff == 0) {16         //如果位数不一致,比较多余位数17         for (int i = index; i < version1Array.length; i++) {18             if (Integer.parseInt(version1Array[i]) > 0) {19                 return 1;20             }21         }22 23         for (int i = index; i < version2Array.length; i++) {24             if (Integer.parseInt(version2Array[i]) > 0) {25                 return -1;26             }27         }28         return 0;29     } else {30         return diff > 0 ? 1 : -1;31     }32 }

 

转载于:https://www.cnblogs.com/yinchengzhe/p/4521619.html

你可能感兴趣的文章
Docker安装Nginx
查看>>
Usenet:P2P下载的替代方法
查看>>
POJ 2155 Matrix (D区段树)
查看>>
SQL Server中索引视图用法详解
查看>>
我的小前端 (1)—— 安卓机和ios机的区别
查看>>
andorid简易定位
查看>>
前端基础标签
查看>>
PHP常见的加密算法
查看>>
react-navigation 简介
查看>>
源码编译安装php7
查看>>
参数化查询与sqlparameter类的使用
查看>>
拷贝,集合,函数,enumerate,内置函数
查看>>
【待完善】资料记录
查看>>
2018-6-4-Python全栈开发day13-14-集合与函数
查看>>
Nginx与Tomcat集成
查看>>
Hadoop学习笔记: 安装配置Hadoop
查看>>
c/c++ 继承与多态 子类隐藏父类的同名非虚函数
查看>>
oracle安全应用角色例子
查看>>
记录Presto数据查询引擎的配置过程
查看>>
APP耗电量测试
查看>>