有一个char引用数组中的对象

时间:2011-02-25 23:50:57

标签: java arrays parsing char

是否可以将char指向数组中的对象?我试图让字符:+, - ,*,/指向我的数组中的索引。

我很清楚以下的部分是不正确的语法。它只是我描述我想要完成的事情的方式。

 public static void main(String[] args) {

            Operations plus;
            Operations minus;
            Operations multiply;
            Operations divide;
    /**********Create jumpTable*******************/
            Operations[] jumpTable = new Operations[255];
    /**********Add Object to jumpTable************/
            jumpTable[0] = new Addition();
            jumpTable[1] = new Subtraction();
            jumpTable[2] = new Multiplication();
            jumpTable[3] = new Division();
    /**********Point to index in table************/
            plus = jumpTable[0];
            minus = jumpTable[1];
            multiply = jumpTable[2];
            divide = jumpTable[3];

    //this is what im trying to do:
    //***************************************
     char +;
     char -;
     '+' = plus
     '-' = minus and etc...
   //****************************************
           double x = Double.parseDouble(args[0]);
           double y = Double.parseDouble(args[1]);


        System.out.printf("%f %s %f = %f%n", x, op, y, op.Compute(x, y));

        }
    }

5 个答案:

答案 0 :(得分:2)

  

是否可以将char指向数组中的对象?

假设您在问:“是否可以使用char作为数组的索引”,那么答案是“是的,这是可能的”。

数组的索引表达式可以具有任何类型,可以将其提升为int;见JLS 15.13char类型可以提升为int。 (你甚至不需要包含类型转换来实现它。它只是有效。)

答案 1 :(得分:1)

您可以使用Map<String, Operations>代替Operations[]吗?

此外,操作应该称为操作。

答案 2 :(得分:0)

您可以将char转换为int或byte

char addition = '+';
operators[(byte)addition] = ...

答案 3 :(得分:0)

您可以在允许类型char的值的每个位置使用类型int的值,并且(除了字符串连接和两种类型的两种方法之外)它的工作方式与通过铸造获得的int。

因此,operators['+']operators[43]完全相同。

如果您只需要*+-/,则可以使用长度为6的数组,并将差值设为{ {1}}(这是第一个):

*

当然,您总是可以根据需要创建表格并直接索引。

答案 4 :(得分:-1)

没有。

char是表示单个16位unicode字符的Java原始类型。

见这里:

http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html