【问题标题】:How to combine an int and string array?如何组合 int 和 string 数组?
【发布时间】:2017-01-25 05:21:44
【问题描述】:

对于一个赋值,我们得到了这两个数组:

private final static int[] NUMBERS= {1000,900,500,400,100,90,50,40,10,9,5,4,1};

private final static String[] LETTERS = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};

目标是创建一种方法,为用户提供他们给出的数字表达式的转换并将其转换为罗马数字。

我只是想知道如何使两个数组的索引点匹配,使它们具有相同的 indexOf,这样我就可以创建返回相应数字的方法。

我知道:
数组的值相互匹配

但我不知道:
如何表达组合两个数组以获得一个返回,即罗马数字。如果我能看到其他学习字符串数组的例子,我也将不胜感激。

【问题讨论】:

标签: java arrays


【解决方案1】:

第一种方法: 将数字及其对应的罗马等效值存储在Map 中,然后您可以简单地获取与每个数字相关联的罗马值。 你可以在这里找到方法: Converting Integers to Roman Numerals - Java


第二种方法是定义一个函数,如下所示:

private final static int[] NUMBERS= {1000,900,500,400,100,90,50,40,10,9,5,4,1}; 
private final static String[] LETTERS = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};

public static String returnRoman(int number)
{
    int index=0;
    for(int i=0;i<NUMBERS.length;i++)
    {
        if(NUMBERS[i]==number)
        {
            index=i;
            break;
        }
    }
    if(index==0)
    return "Not found";
    else
    return LETTERS[index];
}

【讨论】:

  • 我认为这个功能对我帮助最大,我最了解这个解决方案。非常感谢您的帮助。
【解决方案2】:

听起来像是 HashMap 而不是两个单独的数组的工作。这允许您创建一系列&lt;key,value&gt; 对。像这样

public static HashMap<String, Integer> myMapping = new HashMap<String, Integer>();
myMapping.put("M", 1000);
myMapping.put("CM", 900);
...

【讨论】:

    【解决方案3】:

    为什么不试试

    return NUMBERS.indexOf(number) == -1 ? "" : LETTERS[NUMBERS.indexOf(number)];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 2016-10-25
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多