java - 如何创建 RomanNumeral 对象并将其转换回 int、long 等?

标签 java

我想获取存储在对象中的罗马数字值并将其转换回整数、长整型、浮点型和 double 值。除了创建适当的方法之外,我真的不知道从哪里开始。谁能提供一些建议吗?

http://pastebin.com/sqwdhbtu

谢谢!

最佳答案

您的问题似乎是如何将罗马数字转换为整数。在这种情况下,您所需要的只是一个从左到右解析字符串并将结果加在一起的函数,同时查找应减去的较小数字。

class RomanNumeral{
  String roman;

  public RomanNumeral(String roman){
    this.roman = roman;
  }

  public RomanNumeral Clone(){
    return new RomanNumeral(this.roman);
  }

  public int GetValue(){
    int sum = 0;
    int carry = 0;
    for(int i = 0; i< roman.Length;i++)
    {
     if(i<roman.Length-1){
       if(GetRomanValue(roman[i])>GetRomanValue(roman[i+1])){
          sum += GetRomanValue(roman[i]) - carry;
          carry = 0;
       }
     else carry = GetRomanValue(roman[i]);
    }
    else sum += GetRomanValue(roman[i]) - carry;
  }
 }

  int GetRomanValue(char c)
  {
    switch(c){
     case 'I': return 1;
     case 'V': return 5;
     //and so on...
    }
   }
}

获得整数后,您可以将其转换为其他数字类型。

关于java - 如何创建 RomanNumeral 对象并将其转换回 int、long 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312738/

相关文章:

java - 项目在 Eclipse 中运行,但不是从命令行 : java. lang.NoClassDefFoundError 使用 Maven 和 Dom4J

java - Spring Boot 不搜索 log4j2 配置文件

java - 二进制 XML 文件行错误膨胀类 fragment

java - 避免使用构造项目添加到列表中的临时变量

java - 使用 Split 方法创建分词器

java - 为什么在 System.out.println 之前打印 System.err.println?

java - Hibernate 映射类实体名称

java - Java 中的 DOM 解析器,带有属性和标签值

java - 无法在 hibernate 中删除 OneToMany 关系的实例

java - 如何使用 Hibernate/Spring JPA 为 Snowflake 表生成唯一的 AutoIncremented Id?