比较两个版本号的大小

步骤:

1.通过"."进行分割字符串

2.先看两个字符串的前半部分是否相等

3.如果相等,那么有三种情况:字符串1长于2,2长于1,1等于2

如果是长于的情况,比如1.2.0是等于1.2的,所以对于长于的部分要看是否大于0

其他的长于情况,比如1.2.1>1.2

4.如果不相等 字符串二者相减:diff>0?1:-1

注意:

1.使用public static int parseLong(String s) throws NumberFormatException进行字符串到长整型的转换

2.由于字符串的大小未知,所以diff定义为long

3.转义字符是\\,不是//

4. 0代表相等

    1代表左边大

   -1代表右边大

Java代码:

import java.util.Scanner;

public class CompareVersion {
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		String s1=sc.nextLine();
		String s2=sc.nextLine();
		System.out.print(compareVersion(s1,s2));
	}
	public static int compareVersion(String v1,String v2)
	{
		if(v1.equals(v2))
		{
			return 0;
		}
		String[] version1=v1.split("\\.");
		String[] version2=v2.split("\\.");
		int index=0;
		int minLen=Math.min(version1.length, version2.length);
		long diff=0;
		while(index<minLen&&(diff=Long.parseLong(version1[index])-Long.parseLong(version2[index]))==0)
			index++;
		if(diff==0)
		{
			for(int i=index;i<version1.length;i++)
				if(Long.parseLong(version1[i])>0)
					return 1;
			for(int i=index;i<version2.length;i++)
				if(Long.parseLong(version2[i])>0)
					return -1;
			return 0;
		}else {
			return diff>0?1:-1;
		}
	}
}

https://blog.csdn.net/admans/article/details/81865652

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值