Advertisement
Guest User

Conversion Chiffres Romain -> Nombre

a guest
Nov 24th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.57 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Roman {
  4.     static char[] characters = new char[] {'C', 'L', 'X', 'V', 'I'};
  5.     static int[] values = new int[] {100, 50, 10, 5 , 1};
  6.  
  7.     public static void main(String[] args) {
  8.         Scanner sc = new Scanner(System.in);
  9.  
  10.         System.out.println("Veuillez entrer un chiffre romain: ");
  11.  
  12.         String number = sc.nextLine();
  13.         int converted = 0;
  14.  
  15.         for(int i = 0; i < number.length(); i++) {
  16.             char c = number.charAt(i);
  17.             if((number.length() > 1 && i < number.length() - 1) && (charOffset(c, number.charAt(i+1))) > 0) { // Si le nombre contient plus de 1 caractère et que le caractère étudié est avant l'avant dernier comme avec IX ou XL
  18.                 converted += getCharValue(number.charAt(i+1)) - getCharValue(c); // Ajout de la valeur du caractère supérieur moins la valeur du caractère ex: avec XL: +50-10 = 40
  19.                 i++; // On saute un nombre comme IX équivaut à un ajout
  20.             } else { // S'il n'y a pas de cas comme IX / XL on ajoute normalement la valeur du nombre
  21.                 converted += getCharValue(c);
  22.             }
  23.         }
  24.  
  25.         System.out.println("Nombre converti: "+converted); 
  26.     }
  27.  
  28.     static int getCharIndex(char c) { // Renvoie l'index d'un caractère ex: L => 1
  29.         for(int i = 0; i < characters.length; i++)
  30.             if(characters[i] == c) return i;
  31.         return 0;
  32.     }
  33.  
  34.     static int getCharValue(char c) { // Renvoie la valeur du caractère ex: 'X' => 10
  35.         return values[getCharIndex(c)];
  36.     }
  37.  
  38.     static int charOffset(char a, char b) { // Renvoie l'écart entre deux caractères ex: a = 'I' b = 'X' renvoie 4 - 2 = 2
  39.         return getCharIndex(a) - getCharIndex(b);
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement