我有一个如下所示的小代码片段,如您所见,它具有用于检查服务器版本的硬编码值。
现在我的意图是,如果服务器版本是11.3.0或更高,那么应该输入if,但是我无法找到方法,Integer.parseInt
将无法工作我猜我不会因为我解析int而不是浮。
String serverVersion = DatamodelVersion.getInstance().getVersion();
if(serverVersion.equalsIgnoreCase("11.3.0"))
{
outstr = new FileOutputStream(confFile);
prop.setProperty("NTFSDriver", "11.3.0/x86/tntfs.ko");
prop.setProperty("NTFSDriver_x64", "11.3.0/x86_64/tntfs.ko");
prop.store(outstr, "");
update = true;
System.out.println("Updated the tuxera conf file successfully");
logger.logDebugAlways("Updated the tuxera conf file successfully");
}
答案 0 :(得分:4)
试试这个
String serverVersion = DatamodelVersion.getInstance().getVersion();
String[] version = serverVersion.split("\\.");
if (Integer.parseInt(version[0]) > 11 || (Integer.parseInt(version[0]) == 11 && Integer.parseInt(version[1]) >= 3))
{
outstr = new FileOutputStream(confFile);
prop.setProperty("NTFSDriver", "11.3.0/x86/tntfs.ko");
prop.setProperty("NTFSDriver_x64", "11.3.0/x86_64/tntfs.ko");
prop.store(outstr, "");
update = true;
System.out.println("Updated the tuxera conf file successfully");
logger.logDebugAlways("Updated the tuxera conf file successfully");
}
答案 1 :(得分:1)
Java中没有内置函数将11.3.0
转换为float,因为11.3.0
不是有效的浮点数。
对于包含有效浮点数的字符串,您可以在Java中使用Float.valueOf
。
答案 2 :(得分:1)
将版本号拆分为“。”
然后逐一与参考数据进行比较。
String serverVersion = DatamodelVersion.getInstance().getVersion();
serverVersion.split('.')[0] // and so on..
答案 3 :(得分:1)
版本号既不是整数,也不是浮点数。你最好的选择是使用专门的课程:
public class Version implements Comparable<Version> {
public Version(int major, int minor, int revision) {
// set fields
}
public int compareTo(Version other) {
// compare major minor and revision
}
public boolean equals(Object other) {
// code here
}
// parse a version in X.Y.Z form
static Version parse(String version) {
return new Version(//...);
}
}
使用此功能,您可能决定稍后添加对1.3.4-ALPHA或-RC1等版本的支持。
答案 4 :(得分:1)
您可以尝试将数字拆分为3个部分,如下所示:
String[] bits = serverVersion.split(".");
然后,使用for循环和Integer.parseInt
来解析数字的每个部分,并比较每个部分。
答案 5 :(得分:0)
您需要根据这些数字必须在您的域中遵循的规则来定义您自己的方法来检查版本号。
根据您提供的信息,我会在.
上进行字符串拆分,并将每个值依次(作为整数)与11
,3
和{{进行比较1}}分别。
答案 6 :(得分:0)
您在这里有一个Version
课程:http://nvn.svn.sourceforge.net
它应该像这样使用
Version v = Version.parse(DatamodelVersion.getInstance().getVersion());
并以标准格式MAJOR.MINOR.BUILD.REVISION
存储号码答案 7 :(得分:0)
11.3.0不是浮点数。如何使用以下代码:
int Compare(String ver1, String ver2)
{
String[] ver1s = ver1.Split("\.");
String[] ver2s = ver2.Split("\.");
if(ver1s.length > ver2.length) return 1;
if(ver2s.length > ver1.length) return -1;
for(int i = 0;i < ver1s.length;i++)
{
if(Integer.valueOf(ver1s[i]) > Integer.valueOf(ver2s[i])) return 1;
if(Integer.valueOf(ver2s[i]) > Integer.valueOf(ver1s[i])) return -1;
}
return 0;
}