古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念!

罗马数字的表示主要依赖以下几个基本符号:

I  1
V 5
X 10
L 50
C 100
D 500
M 1000 这里,我们只介绍一下1000以内的数字的表示法。 单个符号重复多少次,就表示多少倍。最多重复3次。比如:CCC表示300 XX表示20,但150并不用LLL表示,这个规则仅适用于I X C M。 如果相邻级别的大单位在右,小单位在左,表示大单位中扣除小单位。比如:IX表示9 IV表示4 XL表示40 更多的示例参见下表,你找到规律了吗?

I,1

II,2

III,3

IV,4

V,5

VI,6

VII,7

VIII,8

IX,9

X,10

XI,11

XII,12

XIII,13

XIV,14

XV,15

XVI,16

XVII,17

XVIII,18

XIX,19

XX,20

XXI,21

XXII,22

XXIX,29

XXX,30

XXXIV,34

XXXV,35

XXXIX,39

XL,40

L,50

LI,51

LV,55

LX,60

LXV,65

LXXX,80

XC,90

XCIII,93

XCV,95

XCVIII,98

XCIX,99

C,100

CC,200

CCC,300

CD,400

D,500

DC,600

DCC,700

DCCC,800

CM,900

CMXCIX,999

本题目的要求是:请编写程序,由用户输入若干个罗马数字串,程序输出对应的十进制表示。

输入格式是:第一行是整数n,表示接下来有n个罗马数字(n<100)。以后每行一个罗马数字。罗马数字大小不超过999。

要求程序输出n行,就是罗马数字对应的十进制数据。

例如,用户输入:

3

LXXX

XCIII

DCCII

则程序应该输出:

80

93

702

注意:

请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!

在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

package com.liu.ex3;

import java.util.Scanner;

public class Main {

    public int getValue(char s) {
int result = 0;
if(s == 'I')
result = 1;
else if(s == 'V')
result = 5;
else if(s == 'X')
result = 10;
else if(s == 'L')
result = 50;
else if(s == 'C')
result = 100;
else if(s == 'D')
result = 500;
else if(s == 'M')
result = 1000;
return result;
} public void getResult(String[] A) {
int len = A.length;
int[] result = new int[len];
for(int i = 0;i < len;i++) {
for(int j = 0;j < A[i].length();j++) {
if(j == A[i].length() - 1) {
result[i] = result[i] + getValue(A[i].charAt(j));
} else {
int temp1 = getValue(A[i].charAt(j));
int temp2 = getValue(A[i].charAt(j + 1));
if(temp2 > temp1)
result[i] = result[i] - temp1;
else
result[i] = result[i] + temp1;
}
}
}
//打印结果
for(int i = 0;i < len;i++)
System.out.println(result[i]);
return;
} public static void main(String[] args) {
Main test = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
in.nextLine();
String[] A = new String[n];
for(int i = 0;i < n;i++)
A[i] = in.nextLine();
test.getResult(A);
}
}

最新文章

  1. 耿丹CS16-2班第七次作业汇总
  2. HTML设计模式学习笔记
  3. 执行jar文件生成pdf报错,Unsupported URL &lt;file:///home
  4. Android 如何制作九宫格图片(.9.png)
  5. 字符串专题:map POJ 1002
  6. KMP 算法
  7. JS如何调用隐藏按钮的click事件
  8. Mysql管理工具SQLyog
  9. Plan04.学习与提升
  10. Lua垃圾收集
  11. 基于visual Studio2013解决C语言竞赛题之1037数组求列和
  12. 在 Linux 环境下报错 java.lang.reflect.InvocationTargetException
  13. Python学习之条件判断和循环
  14. git submodule 删除及更新URL 转载的
  15. webpack使用中遇到的问题
  16. hdu1937 二维尺取
  17. 查看linux 内核版本信息
  18. 设置char变量指定位为0或1
  19. 十天精通CSS3(1)
  20. Javassist注解(Annotation)的使用:CXF WebService动态生成

热门文章

  1. [hdu5249]动态中位数
  2. ZOOM火速收购加密公司Kaybase 能否补齐安全短板?
  3. SDK,JDK,API的区别
  4. SQL server 的使用中的subString() 和 charIndex() 实现筛选 某个字段的部分数据
  5. 00002-layui 右侧呼出页面,PopupLayer
  6. 洛谷 p1605 迷宫问题 详解
  7. drf 生命周期
  8. shell脚本定时执行|关闭jar文件
  9. js 文本框只能输入数字和点
  10. HashMap基本介绍