【问题标题】:How to compare different versions of installed java and print the highest version?如何比较不同版本的已安装java并打印最高版本?
【发布时间】:2015-09-03 12:45:20
【问题描述】:

我正在编写一个 VC++ 程序,用于查找系统中所有已安装的 java 版本(例如具有 java 1.7、1.8 等的单个系统)。我想比较版本并以降序(或升序)显示它们。
例如,它应该打印:
版本:1.8.0_60为最高版本。
版本:1.7.0_80 为第二高版本。
.
.
以该顺序。我的代码列出了已安装 JRE 的不同版本。没有问题。但是正如您可能已经猜到的那样,我不知道如何比较返回的版本并找出哪个版本最高,哪个版本第二高等等。将它们转换为整数或浮点数并进行比较显然不会起作用,因为列出的版本也有 ' _'(下划线)字符存在于其中。所以,我的猜测是我将不得不按原样比较它们并按升序或降序对它们进行排序。如何比较这些 TCHAR 值并对其进行排序?

【问题讨论】:

标签: sorting visual-c++ tchar


【解决方案1】:

您可以像这样转换您的版本字符串 int 四部分数值:

TCHAR* s1 = _T("1.8.0_60");
int i1, i2, i3, i4;
_stscanf_s(s1, _T("%d.%d.%d_%d"), &i1, &i2, &i3, &i4);

如果您假设这两个部分都不会大于 255,您可以将它们组合成一个 32 位值,以便在排序时进行比较。

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2018-10-08
    • 2018-11-10
    • 1970-01-01
    • 2020-07-16
    • 2014-12-18
    相关资源
    最近更新 更多