1. 程式人生 > >給定一個羅馬數字 ss,將羅馬數字轉換成整數。

給定一個羅馬數字 ss,將羅馬數字轉換成整數。

給定一個羅馬數字 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); } } } }