java比较版本号
java比较版本号,比如1.0.3和1.2.1相比较考虑到可以用String的compareTo()方法,代码如下:
public class MainClass {
public static void main(String[] args) {
String version1 = "1.0.3";
String version2 = "1.2.1";
int compareTo = version1.compareTo(version2);
System.out.println(compareTo);
}
}
输出结果是-2,也就是说version1小,这是正确的。
但是,这种情况仅限于小数点左右的数字位数相同,如果不相同,会出现一下情况:
public class MainClass {
public static void main(String[] args) {
String version1 = "5.2.3790.24123";
String version2 = "5.11.7883";
int compareTo = version1.compareTo(version2);
System.out.println(compareTo);
}
}
这是输出结果是1,表示version1大,显然是错误的。
所以,正常逻辑应该是以小数点分隔,对应位置上的数字比较大小,代码如下:
public class MainClass {
/**
* 比较版本号的大小,前者大则返回一个正数,后者大返回一个负数,相等则返回0
*/
public static void main(String[] args) {
String version1 = "5.2.3790.24123";
String version2 = "5.11.7883";
String[] split1 = version1.split("\\."); //以.分隔需要转义
String[] split2 = version2.split("\\.");
int length=Math.min(split1.length, split2.length);
int diff=0;
for(int i=0;i<length;i++){
diff = split1[i].length()-split2[i].length();
if(diff==0){ //位数相同时,比较大小
if(split1[i].compareTo(split2[i])>0){
System.out.println("1");
break;
}else if(split1[i].compareTo(split2[i])<0){
System.out.println("-1");
break;
}else if(i==length-1){
System.out.println(length==split1.length? -1 : 1);
}
}else if(diff !=0){ //位数不同时,直接输出
System.out.println(diff);
break;
}
}
}
}
java比较版本号的更多相关文章
- Android4.0-4.4 加入实体按键振动支持的方法(java + smali版本号)
有些手机比方泛泰A820L, 泛泰A890 A900 以及Nubia Z5S 和Z5S mini具有实体按键(这里所说的实体按键是相对于虚拟按键而言, 包括物理按键和触摸屏上多出来的触摸实体按键), ...
- Java - Class版本号和UnsupportedClassVersionError
问题分析 Java是向下兼容的,每一个jdk版本都有对应的class版本号(major + minor version numbers):如果用低版本的jvm去加载高版本jdk编译的类,就会报错:ja ...
- java实现版本号的比较
之前比较客户端版本号,一直用的是String.compareTo,知道出现bug之后才明白了它的不完善地方.它的比较方式是按照字符串的比较来执行的,所以它有不正确的地方.举个例子,之前客户端版本号为: ...
- java -version 版本号与path中配置的不一致
Error: could not open `F:\e\java\jre7\lib\amd64\jvm.cfg' C:\Users\wl>java -versionError: could no ...
- Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号 1. dwr的长处相对于ajax来说.. 1 2. DWR工作原理 1 3. Dwr的架构 2 4. 自己 ...
- Ubuntu中配置Java环境变量时,出现command not found问题解决记录
百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile, ...
- ubuntu 系统下搭建Java的环境
1.首先可以使用 java -version来查看自己是否已经搭建了java的环境,如果出现了java的版本号则表示java的环境已经搭建好了!否则则继续下面的步骤进行java环境的搭建 2.进入Or ...
- 触摸java常量池
java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下. 理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器是jvm执行程序的 ...
- Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法
Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类 的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...
随机推荐
- SQL JOIN\SQL INNER JOIN 关键字\SQL LEFT JOIN 关键字\SQL RIGHT JOIN 关键字\SQL FULL JOIN 关键字
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表 ...
- php count()函数用法 及其 一个坑
用法 count() 函数返回数组中元素的数目. count(array,mode); [mode] 0 - 默认.不计算多维数组中的所有元素. 1 - 递归地计算数组中元素的数目(计算多维数组中的所 ...
- java常见的开发工具
http://www.csdn.net/article/1970-01-01/2824723 http://zhidao.baidu.com/link?url=D8FdJxeFd-z-LV1OfZuZ ...
- ACM集训的Training Day 3的A题。。。
A. 等差数列 一.题目描述: 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来 ...
- GCD的简单用法
/* 创建一个队列用来执行任务,TA属于系统预定义的并行队列即全局队列,目前系统预定义了四个不同运行优先级的全局队列,我们可以通过dispatch_get_global_queue来获取它们 四种优先 ...
- RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)
RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(MVC版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之产品管理 ...
- lintcode bugfree and good codestyle note
2016.12.4, 366 http://www.lintcode.com/en/problem/fibonacci/ 一刷使用递归算法,超时.二刷使用九章算术的算法,就是滚动指针的思路,以前写py ...
- CSS/HTML 改变鼠标指针形状
改变鼠标指针形状的方法有两种:第一种:用的来改变鼠标指针形状.另一种是:利用第三方控件的方法,而我自己最常用的是第一种:用css样式表来改变鼠标指针形状 我们先来看第一种:用来改变鼠标指针形状. 有些 ...
- LL基本姿势
在说怎么练习之前,先说说LL这个游戏里面的一些基本概念: 谱面元素(element) 谱面由一个个的音符组成,在LL中,音符(Note)分以下三类: 单点(下简称S,Single),同一时刻只有一个圆 ...
- Word2013中制作按钮控件
1.由于“开发工具”不经常用,所以在功能选项面板中没有“开发工具”这一栏.所以我们需要设置.在功能选项面板中选择“文件”,在跳转出来的版面中选择“选项”.