Java實現Android用戶端版本號碼比較

來源:互聯網
上載者:User

標籤:應用   android   版本號碼   

目錄

  • 目錄
  • 前言
  • 關鍵點
  • Java代碼實現

前言

早上看了一下CSDN部落格排名,本周最高排名的文章是:Java實現比較版本號碼。個人認為這篇文章寫的不錯,因為Android用戶端系統中經常用到版本號碼比較功能,特別是在應用自升級的情況下。
原博主之所以寫這篇文章,是因為考慮到大部分Java程式員可能會採用compareTo這種不靠譜的API調用或者不規則的版本號碼名稱。
而我寫這篇文章,是由於對ACM題目的推崇和補充一下原博主代碼中考慮不夠周全的情況。

關鍵點

這裡,分兩個問題來說明一下用戶端版本號碼比較的關鍵點。

為什麼不能使用String.compareTo方法來比較用戶端版本號碼
舉個栗子,之前用戶端版本號碼為:9.9.9,而伺服器端最新的用戶端版本號碼為:10.0.1,雖然10.0.1明顯高於9.9.9,但是按照compareTo方法,這個9.9.9是大於10.0.1的,導致用戶端版本號碼比較錯誤。

原博主代碼中欠缺哪些考慮?
原博主考慮了8.5c這種不太可能定義的版本號碼,卻沒有考慮版本號碼中前置0的情況。例如,按照原博主的代碼,版本號碼1.0是大於版本號碼1的。

為什麼推崇ACM題目?
之所以這裡推薦一下大家做ACM,是因為我最早思考這類問題是通過LeetCode上一道難度為easy的字串比較題目,題目連結:Compare Version Number。而原博主的代碼是無法AC這道題目的。

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用戶端版本號碼比較

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.