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
    }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值