使用Java代码来比较Android客户端版本号_java

关键点

    为什么不能使用String.compareTo方法来比较客户端版本号?

    举个例子,之前客户端版本号为:9.9.9,而服务器端最新的客户端版本号为:10.0.1,虽然10.0.1明显高于9.9.9,但是按照compareTo方法,这个9.9.9是大于10.0.1的,导致客户端版本号比较错误。

Java代码实现

扯了一些,最后还是要show一下代码的,以下是我的客户端版本号比较代码,欢迎吐槽。

   

 public static int compareVersion(String version1, String version2) {
    if (version1.equals(version2)) {
      return 0;
    }

    String[] version1Array = version1.split("\\.");
    String[] version2Array = version2.split("\\.");

    int index = 0;
    int minLen = Math.min(version1Array.length, version2Array.length);
    int diff = 0;

    while (index < minLen && (diff = Integer.parseInt(version1Array[index]) - Integer.parseInt(version2Array[index])) == 0) {
      index ++;
    }

    if (diff == 0) {
      for (int i = index; i < version1Array.length; i ++) {
        if (Integer.parseInt(version1Array[i]) > 0) {
          return 1;
        }
      }

      for (int i = index; i < version2Array.length; i ++) {
        if (Integer.parseInt(version2Array[i]) > 0) {
          return -1;
        }
      }

      return 0;
    } else {
      return diff > 0 ? 1 : -1;
    }
  }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
android
java代码 svn版本号、java ftp客户端源代码、java tcp客户端代码、java http客户端代码、java rest 客户端代码,以便于您获取更多的相关知识。

时间: 2024-12-12 05:57:20

使用Java代码来比较Android客户端版本号_java的相关文章

java bin文件-java 代码内容如下(客户端要生成bin文件才能交互)求问 public.bin 文件如何生成的

问题描述 java 代码内容如下(客户端要生成bin文件才能交互)求问 public.bin 文件如何生成的 public static void main(String[] args) throws Exception { CertHelper help = CertHelper.getHttpCert(); Cert cert = new Cert("ticket", "8000", "http://127.0.0.1:8080/service/rbc

Java代码实践12306售票算法(二)_java

周五闲来无事,基于上一篇关于浅析12306售票算法(java版)理论,进行了java编码实践供各位读者参考(以下为相关代码的简单描述) 1.订票工具类 1.1初始化一列车厢的票据信息 /** * 生成Ticket信息 * * @param train * @return */ public static List<Ticket> initTicketList(Train train) { List<Ticket> result = new ArrayList<Ticket&g

纯Java代码实现流星划过天空_java

废话不多说了,直接给大家贴java代码了. import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; public class MeteorFly extends JFrame { final int MAX = ; // (~)流星的个数 final int SLEEP =

使用java代码实现保留小数点的位数_java

复制代码 代码如下: import java.text.* ; import java.math.* ; public class Test{  public Test(){  double a=saveNumber(15.12312312,6); System.out.println("a....."+a); } //保留小数点的位数 //number为要处理的数,digit为要保留的位数 public double  saveNumber(double number,int dig

开源中国 Android 客户端 v2.8.4 代码开源

接着前天正式发布开源中国 Android 客户端 v2.8.4 之后,今天我们给大家带来该版本全部源码,敬请各位笑纳! 获取开源中国客户端 Android 版源码,请访问码云:http://git.oschina.net/oschina/android-app 前天发布版本的时候已经提到过,这个版本中主要的变化有: 新增:开源热评功能.在资讯.博客的评论中找到自己喜欢的评论并点击分享,可以邀请好友一起参与开源热评.(先剧透一下:很快会有热评奖项等着你哦) 改进:线下活动报名.签到流程.为了方便众

android客户端从服务器端获取json数据并解析的实现代码_Android

首先客户端从服务器端获取json数据 1.利用HttpUrlConnection 复制代码 代码如下: /**      * 从指定的URL中获取数组      * @param urlPath      * @return      * @throws Exception      */     public static String readParse(String urlPath) throws Exception {                  ByteArrayOutputSt

开源中国 Android 客户端 v2.8.2 代码开源

继上周五发布开源中国 Android 客户端 v2.8.2 版本之后,今天我们非常高兴地宣布,该版本的代码今天正式开源,敬请各位OSCer们笑纳. 获取开源中国 Android 客户端源码,请访问码云:http://git.oschina.net/oschina/android-app 在上周五的发布新闻中我们也提到过,这个版本中最大的变化在「发现」--> 「码云推荐」中.这个版本中我们把码云推荐的项目加进来,给大家一个全新的体验,可以随时随地查阅优秀的码云项目及其源码. 新版本的核心代码主要集

开源中国 Android 客户端 v2.8.0 代码开源

继昨天发布开源中国 Android 客户端 v2.8.0 版本之后,今天我们如约双手奉上该版本源代码,敬请各位OSCer笑纳. 我们非常欢迎各位访问码云获取源代码:http://git.oschina.net/oschina/android-app 昨天我们已经提到过,这个版本中最大的变化在于 「附近的程序员」,目前我们使用百度周边雷达实现该功能.但就目前而言,雷达能够提供的数据非常有限,所以这部分相关的功能我们还会不断调整,敬请各位关注.此外,我们还对动弹编辑界面进行了重新设计与实现,广大OS

开源中国Android客户端v2.6.5代码开源啦!

我们发布了开源中国Android客户端v2.6.5,这个版本中包含了大量的细节改进,感兴趣的朋友们现在就可以checkout代码出来钻研了交流了. (新版界面实现等,请参考 net.oschina.app.improve 包) 请大家访问码云checkout最新的代码: http://git.oschina.net/oschina/android-app 需要说明的几点: 仓库的master分支中,并不保留任何代码 最新的代码总是会在其版本号对应的tag中(如:v2.6.5) 将代码放到分支(或