Besoin d aide svp

Tag -  
 Tag -
salut, je cherche a creer un programme en java pour transcrire des chiffres romains (I, IX, L...) en nombres normaux (1,9, 50...).
comme je debute, j ai un peu de mal, merci a ceux qui pourront m aider.
Tag

2 réponses

Marden Messages postés 1075 Statut Membre 210
 
Quand tu ne sais pas, tu fais une recherche dans CCM, sinon dans Google / "chiffres romains" et tu finis par trouver, par exemple :
http://www.faulquemont.com/temperatures.html
Et comme on sait que tu as besoin d'aide, tu mets comme Titre du message "conversion chiffres romains".
(cf Fernand Reynaud : "Ici, on vend de belles oranges pas chères !")
0
Tag
 
merci bien de vos reponses, ca m aide vraiment bien... ;-)
0
Hacktrack
 
Pas besoin d'aller voir sur CCM: voilà le code tout chaud sur une assiette!
Il y a 2 classes: Launcher (qui démarre l'application) et Translater (qui contient la logique de calcul)

******************************************************
CLASSE Launcher
******************************************************

package RomanFigures;

/**
* Title: Launcher
* Description: Launcher class for class Translater
*
*@author HackTrack
*@created March 4, 2002
*@version 1.0
*/

public class Launcher {

public Launcher() { }

public static void main(String args[]) {
try {
Translater translater = Translater.getInstance();
String number = "MCMLXXXIX";//1989
System.out.println("Romain: " + number + " Arabe: " + translater.translate(number));
number = "DXXXIII";//533
System.out.println("Romain: " + number + " Arabe: " + translater.translate(number));
number = "MMMDCXCVII";//3697
System.out.println("Romain: " + number + " Arabe: " + translater.translate(number));
}
catch(Exception e) {
System.out.println(e.getMessage());
}

}
}

******************************************************
CLASSE Translater
******************************************************

package RomanFigures;

/**
* Cette classe permet de convertir un nombre romain en valeur décimale.
*
*@author HackTrack
*@created March 4, 2002
*@version 1.0
*/
public class Translater {
public final static int M = 1000;
public final static int C = 100;
public final static int L = 50;
public final static int X = 10;
public final static int V = 5;
public final static int I = 1;
private static Translater instance;

private Translater() {
instance = this;
}

/**
* Calcule et renvoie la valeur décimale correpondant au nombre romain
*
*@param romanNumber Le nombre romain à convertir
*@return La valeur décimale correspondant au nombre romain
*@exception Exception Lorsque un caractère rencontré est inconnu
*/

public int translate(String romanNumber) throws Exception {
int result = 0;
String romanGroup = "";

// On teste les lettres par deux pour les cas particuliers
// tels que IX, CM,XL,...
for(int i = 0; i < romanNumber.length() - 1; i++) {
int firstLetterValue = calculate(romanNumber.charAt(i));
int secondLetterValue = calculate(romanNumber.charAt(i + 1));
if(firstLetterValue < secondLetterValue) {
result += (secondLetterValue - firstLetterValue);
i++;
}
else {
result += firstLetterValue;
// On teste si on a atteint la fin de la chaîne (auquel cas il n'y
// aura alors plus moyen de sélectionner un bloc de deux lettres
// ultérieurement
if(i == romanNumber.length() - 2) {
result += secondLetterValue;
}
}
}
return result;
}

/**
*@param romanLetter Une chiffre romain
*@return La valeur correspondant au chiffre romain
*@exception Exception Lorsque un caractère rencontré est inconnu
*/
private int calculate(char romanLetter) throws Exception {
int value = 0;

switch (romanLetter) {
case 'M':
value = 1000;
break;
case 'C':
value = 100;
break;
case 'D':
value = 500;
break;
case 'L':
value = 50;
break;
case 'X':
value = 10;
break;
case 'V':
value = 5;
break;
case 'I':
value = 1;
break;
default:
throw new Exception("Lettre non reconnue");
}
return value;
}

/**
* Renvoie une instance unique de Translater
*
*@return L'instance unique de Translater
*/
public static Translater getInstance() {
if(instance == null)
return new Translater();
return instance;
}
}

;-)
HackTrack
0