比较版本号大小

public class VersionCodeUtil {

	/**
	 * @author: tingzhang7
	 * @date: 2018-6-20 上午9:16:33
	 * @Description: 比较版本号大小
	 */

	public static int check(String version1, String version2) {

		
		String[] versionArray1 = version1.split("\\.");
		for (int i = 0; i < versionArray1.length; i++) { 
			// 如果位数只有一位则自动补零(防止出现一个是04,一个是5)											
			// (直接以长度比较)
			if (versionArray1[i].length() == 1) {
				versionArray1[i] = "0" + versionArray1[i];
			}
		}
		String[] versionArray2 = version2.split("\\.");
		for (int i = 0; i < versionArray2.length; i++) {
			// 如果位数只有一位则自动补零
			if (versionArray2[i].length() == 1) {
				versionArray2[i] = "0" + versionArray2[i];
			}
		}
		int idx = 0;
		int minLength = Math.min(versionArray1.length, versionArray2.length);// 取最小长度值
		int diff = 0;
		while (idx < minLength
				// 先比较长度
				&& (diff = versionArray1[idx].length()
						- versionArray2[idx].length()) == 0
				// 再比较字符	
				&& (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {
			
			++idx;
		}
		// 如果已经分出大小,则直接返回,如果未分出大小,则再比较位数,有子版本的为大;
		diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
		return diff;
	}

}

猜你喜欢

转载自blog.csdn.net/w_t_y_y/article/details/80742118