是否可以将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));
}
}
答案 0 :(得分:2)
是否可以将char指向数组中的对象?
假设您在问:“是否可以使用char
作为数组的索引”,那么答案是“是的,这是可能的”。
数组的索引表达式可以具有任何类型,可以将其提升为int
;见JLS 15.13。 char
类型可以提升为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