Как сравнить разные версии установленной Java и распечатать самую высокую версию?
Я пишу программу на VC++, которая ищет все установленные версии Java в системе (например, в одной системе с Java 1.7, 1.8 и т. Д.). Я хочу сравнить версии и отобразить их в порядке убывания (или в порядке возрастания).
Например, он должен напечатать:
Версия:1.8.0_60 - самая высокая версия.
Версия:1.7.0_80 - вторая по величине версия.
,
,
в этой последовательности. В моем коде перечислены разные версии установленных JRE. Нет проблем в этом. Но, как вы уже догадались, я понятия не имею, как сравнить возвращаемые версии и найти, какая версия является самой высокой, какая версия занимает второе место и т. Д. Преобразование их в целое число или число с плавающей запятой и сравнение, очевидно, не будут работать, поскольку перечисленные версии также имеют '_'(подчеркивание) характер, присутствующий в них. Итак, я предполагаю, что мне придется сравнить их, как они есть, и отсортировать их в порядке возрастания или убывания. Как мне сравнить эти значения TCHAR и отсортировать их?
1 ответ
Вы можете преобразовать вашу строку версии в четырехзначное числовое значение следующим образом:
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-разрядное значение для простого сравнения при сортировке.