对于作业,我们给出了这两个数组:
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,这样我就可以创建返回相应数字的方法。
我知道:
数组的值相互匹配
但我不知道:
如何表达两个数组的组合,得到一个罗马数字的回归。如果我能看到学习字符串数组的其他例子,我将不胜感激。
答案 0 :(得分:1)
听起来像HashMap
而不是两个独立的数组。这允许您创建一系列<key,value>
对。像这样
public static HashMap<String, Integer> myMapping = new HashMap<String, Integer>();
myMapping.put("M", 1000);
myMapping.put("CM", 900);
...
答案 1 :(得分: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 :(得分:0)
为什么不试试
return NUMBERS.indexOf(number) == -1 ? "" : LETTERS[NUMBERS.indexOf(number)];