2

以下に示すような小さなコードスニペットがあります。これには、サーバーのバージョンを確認するためのハードコードされた値があります。サーバーのバージョンが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");

}
4

8 に答える 8

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");
}
于 2012-12-21T10:30:18.393 に答える
1

次のように、数値を3つの部分に分割してみてください。

String[] bits = serverVersion.split(".");

次に、forループを使用してInteger.parseInt、数値の各セクションを解析し、それぞれを比較します。

于 2012-12-21T10:30:08.277 に答える
1

は有効なfloat数値ではない11.3.0ため、floatに変換する組み込み関数はJavaにありません。11.3.0

Float.valueOf有効な浮動小数点数を含む文字列の場合、Javaで使用できます。

于 2012-12-21T10:25:26.353 に答える
1

バージョン番号を「。」で分割します。

次に、参照データと1つずつ比較します。

String serverVersion = DatamodelVersion.getInstance().getVersion();
serverVersion.split('.')[0] // and so on..
于 2012-12-21T10:28:40.137 に答える
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などのバージョンのサポートを追加することを決定できます。

于 2012-12-21T10:29:32.680 に答える
0

ここにVersionクラスがあります:http://nvn.svn.sourceforge.net

このように使用する必要があります

Version v = Version.parse(DatamodelVersion.getInstance().getVersion());

番号を標準形式で保存しますMAJOR.MINOR.BUILD.REVISION

于 2012-12-21T10:29:55.820 に答える
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;
}
于 2012-12-21T10:32:03.210 に答える
0

ドメインでこれらの番号が従う必要のあるルールに基づいて、バージョン番号を確認するための独自の方法を定義する必要があります。

あなたが提供した情報に基づいて、私は文字列分割を.行い、各値を順番に(整数として)、と比較113ます0

于 2012-12-21T10:28:11.600 に答える