在Java中如何将字符串解析为float并比较值?

时间:2012-12-21 10:22:01

标签: java string-parsing

我有一个如下所示的小代码片段,如您所见,它具有用于检查服务器版本的硬编码值。 现在我的意图是,如果服务器版本是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");

}

8 个答案:

答案 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)

您需要根据这些数字必须在您的域中遵循的规则来定义您自己的方法来检查版本号。

根据您提供的信息,我会在.上进行字符串拆分,并将每个值依次(作为整数)与113和{{进行比较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;
}