zoukankan      html  css  js  c++  java
  • java实现版本号的比较

      之前比较客户端版本号,一直用的是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 }
  • 相关阅读:
    集群任务管理系统SGE的简明教程
    三代全长转录组测序和组装
    quota
    基因组转座元件
    单倍体
    什么是寒武纪、志留纪、泥盆纪、白垩纪
    对组装之后的三代基因组进行polish
    使用 PhyML 构建进化树
    PAML软件中的mcmctree命令估算物种分歧时间
    OrthoMCL及orthofinder 两种软件进行聚类分析
  • 原文地址:https://www.cnblogs.com/yinchengzhe/p/4521619.html
Copyright © 2011-2022 走看看