2015-09-03 3 views
0

J'écris un programme VC++ qui recherche toutes les versions installées de Java dans un système (comme un système unique ayant Java 1.7, 1.8 etc). Je veux comparer les versions et les afficher en ordre décroissant (ou croissant). Par exemple, il devrait imprimer:
Version: 1.8.0_60 est la version la plus élevée.
Version: 1.7.0_80 est la deuxième version la plus haute.
.
.
dans cet ordre. Mon code répertorie les différentes versions des JRE installés. Aucun problème à cela. Mais comme vous l'avez deviné, je n'ai aucune idée sur la façon de comparer les versions retournées et trouver quelle version est la plus haute, quelle version est la deuxième plus élevée, etc .. Convertir en entier ou en flottant et de comparer ne fonctionnera évidemment pas. _ '(trait de soulignement) caractère présent en eux. Donc, je suppose que je vais devoir les comparer comme ils sont et les trier dans l'ordre croissant ou décroissant. Comment puis-je comparer ces valeurs TCHAR et les trier?Comment comparer différentes versions de java installées et imprimer la version la plus élevée?

+0

Acceptez la réponse s'il vous plaît et voir http://stackoverflow.com/tour. – LogicStuff

Répondre

0

Vous pouvez convertir votre chaîne de version int valeur numérique en quatre parties comme ça:

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

Si vous assumez alors que ni partie va être supérieure à 255, vous pouvez les combiner en un seul 32 bits valeur pour faciliter la comparaison lors du tri.