Java 如何对罗马数字使用一维数组?

Java 如何对罗马数字使用一维数组?,java,arrays,Java,Arrays,这里是新的编程学生,我正在创建一个程序,将罗马数字输入转换为十进制数。我现在正在研究一种转换方法,我必须使用一维数组,所以我做了如下工作: public static int numberConversion(int number) { char[] romanChar = new char[8]; romanChar[I] = 1; romanChar[V] = 5; romanChar[X] = 10; romanChar[L] = 50;

这里是新的编程学生,我正在创建一个程序,将罗马数字输入转换为十进制数。我现在正在研究一种转换方法,我必须使用一维数组,所以我做了如下工作:

public static int numberConversion(int number) {

    char[] romanChar = new char[8];
    romanChar[I] = 1;
    romanChar[V] = 5;
    romanChar[X] = 10;
    romanChar[L] = 50;
    romanChar[C] = 100;
    romanChar[D] = 500;
    romanChar[M] = 1000;
但显然有些地方不对劲,因为我在这7行代码中的每一行都从Netbeans得到了一个错误

找不到符号。符号:变量I


我知道这是错误的,但是我怎样才能正确地使用一维数组来输入这些罗马数字字符的值呢?

使java成为一种重要语言的原因之一是java是一种面向对象的语言,所以请使用它

在您的示例中,创建一个类,例如RomanChar,其中符号为char,值为整数,如下所示:

Public class RomanChar{
    public int value;
    public char romanCharamcter;
}
我认为使用枚举是最好的解决方案。它提供不可变(常量)值;这正是这个实现所需要的。罗马数字的值和字符根本不能改变。当然,输出是:

The roman numeral 'V' value is: 5

使用
java.util.Map
?没有“char”索引。如果你真的想要一张地图,你可以使用ascii索引(即字母-‘a’),但这是糟糕的设计,我建议你逐字张贴作业。我们不知道你想做什么,也不知道数组应该如何用于转换。这不是一个好的解决方案,因为值可以更改。最佳解决方案应提供罗马数字作为常量。@hfontanez出于这个原因,我可以推荐Map,但由于OP没有数组方面的经验,我认为Map对他来说非常困难。但Map的问题是它不是一成不变的。现实生活中的罗马数字是常量。表示它的软件对象也应该是常量。如果您使用一个类,最好的方法就是添加这些值。然而,枚举是类常量更好的替代方法。@hfontanez我喜欢你的答案,即枚举是不可变的,因此我投票支持你。但是你必须明白,编程中的一个问题并不总是有一个解决方案,只要我看到你只是编程方面的一个学习者,试着从其他人那里学习新的想法,而不是抵制其他观点(比如我的和从这里删除的另一个答案)。我从来没有说过我的解决方案是唯一的解决方案。然而,我确实说过,无论为这种情况实现什么解决方案,都必须提供两件事:1)不变性,2)不接受重复。由于罗马数字的性质,这是一个隐含的要求。除此之外的任何解决方案都不是好的解决方案。
The roman numeral 'V' value is: 5