給定一個羅馬數字 ss,將羅馬數字轉換成整數。
阿新 • • 發佈:2018-11-28
給定一個羅馬數字 s,將羅馬數字轉換成整數。
如羅馬數字I,II,III,IV,V分別代表數字 1, 2, 3, 4, 5。
首先要來了解一下羅馬數字表示法,基本字元有 7 個:I、V、X、L、C、D、M,分別表示1、5、10、50、100、500、1000。
在構成數字的時候,有下列規則:
1、相同的數字連寫,所表示的數等於這些數字相加得到的數,如:III = 3=3;
2、小的數字在大的數字的右邊,所表示的數等於這些數字相加得到的數, 如:VIII = 8;XII = 12;
3、小的數字,(限於Ⅰ、X和C)在大的數字的左邊,所表示的數等於大數減小數得到的數,如:IV = 4;IX = 9;
4、正常使用時,連寫的數字重複不得超過三次。
輸入格式
輸入一個羅馬數字字串,其對應的數字為 s(1≤s≤3999)。
輸出格式
輸出對應的整數 ss。
樣例輸入 複製
CXXIII
樣例輸出 複製
123
這題沒想到好的辦法。。。。。。。。。。暫時這樣了
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String[][] lm = { { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" },
{ "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" },
{ "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" }, { "", "M", "MM", "MMM" } };
String[][] sz = { { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" },
{ "", "10", "20", "30", "40", "50", "60", "70", "80" , "90" },
{ "", "100", "200", "300", "400", "500", "600", "700", "800", "900" },
{ "", "1000", "2000", "3000", "", "", "", "", "", "" } };
Scanner scanner = new Scanner(System.in);
String in = scanner.nextLine();
for (int i = 1; i <= 3999; i++) {
String string = lm[3][(i / 1000)] + lm[2][(i / 100) % 10] + lm[1][(i / 10) % 10] + lm[0][i % 10] + "";
if (in.equals(string)) {
int condition =Integer.parseInt((i / 1000) + "" + (i / 100) % 10 + "" + (i / 10) % 10 + "" + i % 10);
System.out.println(condition);
}
}
}
}