1 回答

TA贡献1815条经验 获得超10个赞
这里有一些东西可以让你去 - 非常简单:
public class Main {
public static void main(String[] args)
{
String version1 = "4.10";
String version2 = "4.5";
compareVersions(version1, version2);
}
private static void compareVersions(String v1, String v2) {
String[] versionSplit1 = v1.split("\\.");
String[] versionSplit2 = v2.split("\\.");
if (versionSplit1[0].equals(versionSplit2[0])) {
if (Integer.parseInt(versionSplit1[1]) > (Integer.parseInt(versionSplit2[1]))) {
System.out.println(v1 + " is bigger than " + v2);
} else if (Integer.parseInt(versionSplit1[1]) == (Integer.parseInt(versionSplit2[1]))){
System.out.println(v1 + " is equal to " + v2);
} else {
System.out.println(v2 + " is bigger than " + v1);
}
} else if (Integer.parseInt(versionSplit1[0]) > Integer.parseInt(versionSplit2[0])) {
System.out.println(v1 + " is bigger than " + v2);
} else {
System.out.println(v2 + " is bigger than " + v1);
}
}
}
如果我正确理解您的问题,这是一个非常快速的粗略解决方案 - 我想您需要扩展它以满足您的需求,但这个想法仍然存在。
如果版本仍不是,请将版本转换为字符串。
按点拆分,您最终会得到两个部分 - 例如第一部分(4)和第二部分(10)。
比较第一部分(因为它是字符串,因此需要将其解析为整数)。如果第一部分相同,请比较第二部分(您还需要解析它)。
如果您使用的是 BigDecimal,并且想要转换为 String 并保留尾随零,请尝试以下操作:
double value = 4.10;
//convert double to BigDecimal
BigDecimal bigDecimalValue = BigDecimal.valueOf(value);
BigDecimal tempValue = bigDecimalValue.setScale(2, RoundingMode.CEILING);
//convert to String
System.out.println(tempValue.toPlainString()); //5.40
然后按照上面的字符串所述继续操作。
添加回答
举报