Accueil > > > VERSION JAVA DE : ROMANUTILS, TOUT POUR CONVERTIR LES CHIFFRES ROMAINS VERS LES ENTIERS ET INVERSEMENT
VERSION JAVA DE : ROMANUTILS, TOUT POUR CONVERTIR LES CHIFFRES ROMAINS VERS LES ENTIERS ET INVERSEMENT
Information sur la source
Description
Rapide portage de l'excellente source Delphi disponible à http://www.delphifr.com/code.aspx?ID=34428
Source
- public class RomanUtils
- {
- private final static String[] acceptedchar={"I","V","X","L","C","D","M"};
-
- private final static String[] _RRUTR = {"","I","II","III","IV","V","VI","VII","VIII","IX"};
- private final static String[] _RRDTR = {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
- private final static String[] _RRCTR = {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
- private final static String[] _RRMTR = {"","M","MM","MMM","","","","","",""};
-
-
- /**
- * Validate if the string entered is a right Roman number
- * @param val
- * @return true if ok
- */
- static boolean IsRomanNumber(String val)
- {
- boolean actuval;
-
- for (int i=0;i<val.length();i++)
- {
- actuval=false;
- for (int j=0;j<acceptedchar.length;j++)
- if (val.substring(i, i+1).equals(acceptedchar[j])) actuval=true;
- if (actuval==false) return false;
- }
- return true;
- }
-
- /**
- * Validate if the entered integer value is in the accepted limits
- * @param val
- * @return true if ok
- */
- static boolean IsRomanNumber(int val)
- {
- if ((val>0)&&(val<=39999)) return true;
- return false;
- }
-
- /**
- * return the value of a Roman figure
- * @param vv = The figure
- * @return The corresponding value
- */
- static int RomanCharToValue(char vv)
- {
- switch (vv)
- {
- case 'I': return 1;
- case 'V': return 5;
- case 'X': return 10;
- case 'L': return 50;
- case 'C': return 100;
- case 'D': return 500;
- case 'M': return 1000;
- }
- return 0;
- }
-
- /**
- * Return the Roman number string corresponding to the value entered.
- * @param value to convert
- * @return String value
- */
- public static String IntToRoman(int i)
- {
- if (IsRomanNumber(i))
- {
-
- if (i>=0 && i<=9) return _RRUTR[i];
- if (i>=10 && i<=99) return _RRDTR[i / 10]+ _RRUTR[i % 10];
- if (i>=100 && i<=999) return _RRCTR[i / 100]+ _RRDTR[(i / 10) % 10]+ _RRUTR[i % 10];
- if (i>=1000 && i<=3999) return _RRMTR[i / 1000]+_RRCTR[(i / 100) % 10]+_RRDTR[(i / 10) % 10]+_RRUTR[i % 10];
-
- }//endif
-
- return "";
- }
-
- /**
- * Return the int value correspondif of a Roman String entered
- * @param value in roman figures
- * @return int value
- */
- public static int RomanToInt(String RN)
- {
- int oc,NewRV,OldRV=0,Result=0;
-
- if (IsRomanNumber(RN))
- {
- for (oc=0;oc<RN.length();oc++)
- {
- NewRV = RomanCharToValue(RN.toCharArray()[oc]);
- if (NewRV > OldRV)
- {
- Result+=NewRV-(OldRV<<1);
- }else
- {
- Result+=NewRV;
- }//endif
- OldRV=NewRV;
- }//endfor
-
- }else
- return -1;//endif
-
- return Result;
- }
- }
public class RomanUtils
{
private final static String[] acceptedchar={"I","V","X","L","C","D","M"};
private final static String[] _RRUTR = {"","I","II","III","IV","V","VI","VII","VIII","IX"};
private final static String[] _RRDTR = {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
private final static String[] _RRCTR = {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
private final static String[] _RRMTR = {"","M","MM","MMM","","","","","",""};
/**
* Validate if the string entered is a right Roman number
* @param val
* @return true if ok
*/
static boolean IsRomanNumber(String val)
{
boolean actuval;
for (int i=0;i<val.length();i++)
{
actuval=false;
for (int j=0;j<acceptedchar.length;j++)
if (val.substring(i, i+1).equals(acceptedchar[j])) actuval=true;
if (actuval==false) return false;
}
return true;
}
/**
* Validate if the entered integer value is in the accepted limits
* @param val
* @return true if ok
*/
static boolean IsRomanNumber(int val)
{
if ((val>0)&&(val<=39999)) return true;
return false;
}
/**
* return the value of a Roman figure
* @param vv = The figure
* @return The corresponding value
*/
static int RomanCharToValue(char vv)
{
switch (vv)
{
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
}
return 0;
}
/**
* Return the Roman number string corresponding to the value entered.
* @param value to convert
* @return String value
*/
public static String IntToRoman(int i)
{
if (IsRomanNumber(i))
{
if (i>=0 && i<=9) return _RRUTR[i];
if (i>=10 && i<=99) return _RRDTR[i / 10]+ _RRUTR[i % 10];
if (i>=100 && i<=999) return _RRCTR[i / 100]+ _RRDTR[(i / 10) % 10]+ _RRUTR[i % 10];
if (i>=1000 && i<=3999) return _RRMTR[i / 1000]+_RRCTR[(i / 100) % 10]+_RRDTR[(i / 10) % 10]+_RRUTR[i % 10];
}//endif
return "";
}
/**
* Return the int value correspondif of a Roman String entered
* @param value in roman figures
* @return int value
*/
public static int RomanToInt(String RN)
{
int oc,NewRV,OldRV=0,Result=0;
if (IsRomanNumber(RN))
{
for (oc=0;oc<RN.length();oc++)
{
NewRV = RomanCharToValue(RN.toCharArray()[oc]);
if (NewRV > OldRV)
{
Result+=NewRV-(OldRV<<1);
}else
{
Result+=NewRV;
}//endif
OldRV=NewRV;
}//endfor
}else
return -1;//endif
return Result;
}
}
Conclusion
Je ne me suis pas amusé à faire des tests de performance... De toutes façons, je doute qu'un jour ce soit utilisé dans des flux tendus. Et si c'est le cas, le boulot est prémâché...
Historique
- 30 octobre 2007 16:57:09 :
- Problèmes lors de l'enregistrement de la source... Donc, l'URL n'était pas direk!
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Conversion String / Int [ par Skeetle ]
J'ai un petit soucis, je cherche desespérément à convertir une String en entier...Je m'expliqueDans le code " String toto = "2"; ", je veux pouvoir
Conversion Chiffres Lettres [ par DarkKing ]
slt,j'ai un petit probleme je veux ecrie un programme pour convertir un nombre entier en un chaine de caractère.10 dix134 cent trente quatre
conversion d'une chaine de caractére en entier [ par moooonaaaa ]
Salem,j'ai une chaine de caractére de la forme suivante"a.b.c.d"je veux faire un test sur ces valeurs.Il faut que tous soit des entiers.j'utilise Toke
Aide conversion entier => binaire [ par djiaydjo ]
Salut la rooums;Voila je suis entrain de faire un petit programme et dans ce dernier j'aurai besoin de convertir un entier en binaire.J'ai vu qu'il y
CodeBarre et conversion binaire ? ca marche comment ? [ par djiaydjo ]
Salut,Etant moi meme entrain de faire un générateur de code barre, j'aurai besoin d'un éclairecissement : j'ai vu qu'il y a quelqu'un qui a déjà posté
conversion format video [ par oisurge ]
Bonjour,J'ai une appli java qui génère du .mov avec JMF, mais le fichier est trop gros et je voudrais le convertir en mpeg (JMF n'est pas capable d'en
Covertir une Donnée d'un fichier en entier [ par majormadidi1984 ]
Bonjour tout le monde, En effet j'essaie de convertir un string que j'ai récupéré dans un fichier texte pour le convertir un entier, mais je n'y parv
jeu des chiffres et des lettres [ par yrifka ]
slt,j'ai un projet concernant l'interface graphique du jeu des chiffres et des lettres mais je suis bloquée en 2 points:le 1er à propos du chronomètre
chronometre dans un jeu chiffres et des lettres [ par yrifka ]
salut je suis entrain de programmer une interface graphique du jeux des chiffres et des lettres(en java, bibliothèque swing)et je veux inclure un chro
Générer des nombres unique [ par moonracker0210 ]
Bonjour à tous. Je cherche à générer une liste de nombre allant de 1 à 54. Jusque la, pas de soucis. Mais j'aimerais que cette liste contiennent des
|
Derniers Blogs
QUELQUES TRUCS INTéRESSANTS (05/09/2010)QUELQUES TRUCS INTéRESSANTS (05/09/2010) par coq
Cette fois-ci : .NET Debug / Performance Sécurité SQL Server .NET Determining if a type is defined in the .NET Framework (blog de Scott Dorman) Ha tiens, je n'avais jamais vraiment pensé à utiliser le jeton de clé publique...
Cliquez pour lire la suite de l'article par coq ENUMERABLECOLLECTIONENUMERABLECOLLECTION par Matthieu MEZIL
Prenons le scénario suivant. On utilise MVVM. On a les deux classes suivantes dans le model : public class Child { } public class Parent { private ObservableCollection < Child > _children; public ObservableCollection < Child > Children { get {...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [HS] CHROME 6 + MOI = COUP DE GUEULE ![HS] CHROME 6 + MOI = COUP DE GUEULE ! par JeremyJeanson
Attention, le poste qui suit n'est pas la complainte d'une personne : Qui n'aime pas Chrome. D'un anti Google. D'un développeur qui a un poil énorme dans la main. Ceux qui me fréquentent savent que je change de navigateur favori tous les 2 ou 3 mois afin ...
Cliquez pour lire la suite de l'article par JeremyJeanson [WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7[WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7 par Audrey
Lors de la réalisation de ma 2ème application Windows Phone 7, j'ai souhaité utiliser un WrapPanel pour afficher plusieurs photos. Mais le contrôle WrapPanel ne fait pas parti de la liste des contrôles inclus dans le SDK de la version Beta des outils pour...
Cliquez pour lire la suite de l'article par Audrey [WP7] BESOIN D'AVOIR DES DONNéES EN CACHE[WP7] BESOIN D'AVOIR DES DONNéES EN CACHE par Nicolas
Les développeurs ASP.NET ont l'habitude de mettre des données en cache pour éviter de requêter a chaque fois la base de données. Et il est toujours utilie de penser que vos utilisateurs mobiles n'ont pas troujours une super connexion 3G/WIFI et un for...
Cliquez pour lire la suite de l'article par Nicolas
Forum
RE : JAVA JDBCRE : JAVA JDBC par hinanos
Cliquez pour lire la suite par hinanos
Logiciels
WebLogAndPass (1.0.0)WEBLOGANDPASS (1.0.0)WebLogAndPass est un logiciel permettant de mémoriser vos sites préférés et pour chacun d'entre-e... Cliquez pour télécharger WebLogAndPass uTorrent (2.0.4)UTORRENT (2.0.4)C'est un client BitTorrent très puissant et très performant. Comme son nom l'indique, uTorrent (m... Cliquez pour télécharger uTorrent Bureau de Gestion - ERP Devis Facturation (2.02)BUREAU DE GESTION - ERP DEVIS FACTURATION (2.02)- Version gratuite du 10/06/2010
Le Bureau de Gestion est un logiciel dédié à la gestion de l'en... Cliquez pour télécharger Bureau de Gestion - ERP Devis Facturation 4Videosoft Transfert iPod Mac (3.2.08)4VIDEOSOFT TRANSFERT IPOD MAC (3.2.08)4Videosoft Transfert iPod-Mac caractérise principalement à transférer les fichiers iPod vers Mac.... Cliquez pour télécharger 4Videosoft Transfert iPod Mac 4Videosoft HD Convertisseur (3.3.08)4VIDEOSOFT HD CONVERTISSEUR (3.3.08)Etant le meilleur HD Vidéo Convertisseur, 4Videosoft HD Convertisseur, vous pouvez regarder la vi... Cliquez pour télécharger 4Videosoft HD Convertisseur
|