1. 程式人生 > >scala 比較任意兩款軟體任意版本號大小

scala 比較任意兩款軟體任意版本號大小

  • scala比較任意兩款軟體任意版本號大小
    */
    object ComTest {
    def main(args: Array[String]): Unit = {
    //先獲取兩個引數
    //暫定軟體名稱和版本之間用空格分隔
    val v1=“Hadoop v1.1.2.1.5”
    val v2=“Hadoop v1.1.2.1.2”
    //自定義比較函式
    compareVersion(v1,v2);
    }
    def compareVersion(v1: String, v2: String){
    //首先先判斷是否為同一款軟體
    //根據預設分隔符 空格進行切分 得到一個兩個元素的String[]
    val r1=v1.split(" “)
    val r2=v2.split(” “)
    //println(r1(1))
    //println(r2(1))
    if(r1(0)!= null && r2(0) != null){
    if(cpHashcode(r1(0)) == cpHashcode(r2(0))){
    if(r1(1) != null && r2(1) != null){
    //提前判斷版本號是否相同,提高程式執行效率
    if(cpHashcode(r1(1)) == cpHashcode(r2(1)))
    println(v1+“與”+v2+“的版本號相同”)
    //自定義比較方法
    // 必須確定返回1 為v1版本號高
    // 必須確定返回-1 為v2版本號高
    val a=cpVersion(r1(1),r2(1))
    if(a > 0){
    println(v1+“比”+v2+“的版本高”)
    }else if(a < 0){
    println(v2+“比”+v1+“的版本高”)
    }
    }else{
    println(v1+“或”+v2+“的版本號為空”)
    }
    }else{
    println(r1(0)+“與”+r2(0)+“不是同一款軟體,無法區分版本號高低”)
    }
    }else{
    println(r1(0)+“或”+r2(0)+“軟體名稱為空”)
    }
    }
    def cpVersion(str: String, str1: String):Int={
    val s1= str.split(”\.")
    val s2= str1.split("\.")
    if(s1.length== s2.length){
    for(i <- 0 to s1.length){
    if(cpHashcode(s1(i)) > cpHashcode(s2(i))){
    return 1;
    }else if(cpHashcode(s1(i)) < cpHashcode(s2(i))){
    return -1;
    }
    }
    } else if(s1.length < s2.length){
    try{
    for(i <- 0 to s2.length){
    if(cpHashcode(s1(i))<cpHashcode(s2(i))){
    return -1;
    }else if(cpHashcode(s1(i))>cpHashcode(s2(i))){
    return 1;
    }
    }
    }catch {
    //防止下標越界,捕捉異常,並根據業務邏輯返回 -1
    case e:ArrayIndexOutOfBoundsException => return -1
    }
    }else if(s1.length > s2.length){
    //s1的字串長度大,下標越界則返回 1
    try{
    for(i <- 0 to s1.length){
    if(cpHashcode(s1(i))<cpHashcode(s2(i))){
    return -1;
    }else if(cpHashcode(s1(i))>cpHashcode(s2(i))){
    return 1;
    }
    }
    }catch {
    //防止下標越界,捕捉異常,並根據業務邏輯返回 1
    case e:ArrayIndexOutOfBoundsException => return 1
    }
    }
    return 0
    }
    //自定義一個返回字元雜湊值的函式
    def cpHashcode(s:String): Int ={
    return s.toLowerCase.hashCode
    }
    }
  • 相關推薦

    scala 比較任意軟體任意版本大小

    scala比較任意兩款軟體任意版本號大小 */ object ComTest { def main(args: Array[String]): Unit = { //先獲取兩個引數 //暫定軟體名稱和版本之間用空格分隔 val v1=“Hadoop v1.1.2.1.5” val v2=“Hadoop v1.

    比較任意個String型別的數值大小

    import java.util.regex.Pattern; public class Main { public static void main(String... args) {

    【原創】python 比較版本大小

    ?123456789101112131415161718192021222324252627

    iOS 比較版本大小的方法

    sar ++ 服務器 數字 span -- 兼容 mar line 比較iOS版本號大小 eg:3.2.0和3.1.0 或者 3.2.0和3.2比較返回bool值變量YES or NO 在APP叠代更新過程中,有這樣的需求,需要比較版本號的大小,然後彈出提示框提示更新. 之

    Java實現比較APP版本大小

    實現程式碼如下: /** * 比較APP版本號的大小 * <p> * 1、前者大則返回一個正數 * 2、後者大返回一個負數 * 3、相等則返回0 * * @param version1 app

    CentOS 中檢視軟體版本

    CentOS  中檢視軟體的版本號   1. rpm 檢視 [[email protected] ~]# rpm -qa | grep mysql mysql-community-client-5.7.24-1.el6.x86_64 mysql-community-

    軟體版本是如何確定的?

    一般來講大部分的軟體版本號分3段,比如 A.B.C A 表示大版本號,一般當軟體整體重寫,或出現不向後相容的改變時,增加A,A為零時表示軟體還在開發階段。 B 表示功能更新,出現新功能時增加B C 表示小修改,如修復bug,只要有修改就增加C 除了版本號

    每次新版本build時,讓軟體版本自增

    VC2005利用SVN的版本號,生成DLL和EXE檔案的版本號 TortoiseSVN下有一個SubWCRev程式,可以獲取任意個路徑對應的SVN版本庫的版本號。並替換到檔案對應位置。 VC2005的資原始檔可以控制生成的二進位制檔案版本號。 可以利用VC2005的生成前命令,呼叫SubWCRev來獲取最新

    軟體釋出版本說明

    Alpha:是內部測試版,一般不向外部發布,會有很多Bug.一般只有測試人員使用。Beta:也是測試版,這個階段的版本會一直加入新的功能。在Alpha版之後推出。RC:(Release Candidate) 顧名思義麼 ! 用在軟體上就是候選版本。系統平臺上就是發行候選版本。

    軟體開發版本定義方式

    software軟體版本號總結:V(Version):即版本,通常用數字表示版本號。(如:EVEREST Ultimate v4.20.1188 Beta )Build: 用數字或日期標示版本號的一種方式。(如:VeryCD eMule v0.48a Build 071112)SP: Service Pack

    軟體開發版本

    軟體開發的基礎知識—軟體版本號詳解 本文相關資料均收集自網路,版權歸原作者所有。 軟體版本號總結: V(Version):即版本,通常用數字表示版本號。(如:EVEREST Ultimate v4.20.1188 Beta )Build: 用數字或日期標示版本號的一種方式。

    軟體專案版本的命名規則及格式

    版本控制比較普遍的 3 種命名格式 : 一、GNU 風格的版本號命名格式 :主版本號 . 子版本號 [. 修正版本號 [. 編譯版本號 ]]Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Nu

    Android基礎:教你如何獲取軟體自身版本和Android系統版本

    前言 在Android軟體開發過程中,版本升級常常需要得到軟體版本,與伺服器作對比後決定是否升級,那麼如何獲取軟體版本呢?有時我們需要獲取系統版本已決定載入合適的資原始檔,系統版本又如何得到呢?假如我

    十六、xx.xx.xx格式版本大小比較

    roo rcm varchar declare del highlight string eat exists DELIMITER $$ USE `deshangshidai`$$ DROP FUNCTION IF EXISTS `STRCMP_MY_VER

    Java對比APP版本大小

    /** * 比較版本號的大小,前者大則返回一個正數,後者大返回一個負數,相等則返回0 * @param version1 * @param version2 */ publi

    純JAVA環境獲取APK資訊(包名,版本,版本,大小,許可權...),純JAVA語言編寫PC端獲取APK資訊

    純JAVA環境獲取APK資訊:包名,版本,版本號,大小,許可權... 純Java環境獲取APK資訊需要兩個包:AXMLPrinter2.jar 跟jdom.jar,用於反編譯XML和解析XML的 專案目錄 這個類是獲取APK資訊的 public class ApkUt

    java 檢查版本大小

    apk開發過程中,需要比較版本號大小,判斷是否需要升級:一個版本號:Firmware Version: 6.3.148.0我的做法是先提取數字,儲存為List<Integer>.例如6,3,148,0然後把新舊兩個版本的List<Integer>逐個取

    求二叉樹中任意個結點的距離

    case itl wid get ren return roo [] fall 求二叉樹中任意兩個結點的距離實現步驟:計算跟到第一個結點的距離;計算跟到第二個結點的距離;計算lca;計算跟到lca結點的距離;結果為(1) + (2) - 2 * (4),因為重復計算了兩次的

    [微軟]有個序列a,b,大小都為n,序列元素的值任意整數,無序; 要求:通過交換a,b中的元素,使[序列a元素的和]與[序列b元素的和]之間的差最小_利用排列組合思路解決_python版

    += 求和 ever tro 解決 turn 運行 main lis (原題出自微軟公司面試題)問題如下:有兩個序列a,b,大小都為n,序列元素的值任意整數,無序;要求:通過交換a,b中的元素,使[序列a元素的和]與[序列b元素的和]之間的差最小。例如:a=[100,99,

    計算任意個個位整數之間所能組成的奇數個數

    lac .com logs onclick 判斷 document com 編寫 htm <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>&