Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在数组中有一个对象的char引用_Java_Arrays_Parsing_Char - Fatal编程技术网

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

Java 在数组中有一个对象的char引用,java,arrays,parsing,char,Java,Arrays,Parsing,Char,是否可以将字符点指向数组中的对象?我试图让字符:+,-,*,/指向数组中的索引 我很清楚我下面的部分语法不正确。这只是我描述我希望完成的事情的方式 public static void main(String[] args) { Operations plus; Operations minus; Operations multiply; Operations divide; /*****

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

我很清楚我下面的部分语法不正确。这只是我描述我希望完成的事情的方式

 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));

        }
    }
没有

char是表示单个16位unicode字符的Java基本类型

请看这里:


您可以将字符强制转换为int或byte

char addition = '+';
operators[(byte)addition] = ...
您是否可以使用
映射
而不是
操作[]

此外,操作也可能被称为操作

是否可以将字符点指向数组中的对象

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


数组的索引表达式可以具有任何可以提升为
int
的类型;看见并且
char
类型可以升级为
int
。(你甚至不需要包含一个类型转换来实现它。它只是工作而已。)

你可以在每一个允许类型
int
的地方使用一个类型
的值,并且(除了字符串连接和两种类型都有两种方法)它的工作原理与通过转换获得的int相同

因此,
运算符['+']
运算符[43]
相同,并且类似

如果您只需要
*
+
-
/
,则可以使用长度为6的数组,并通过将差值取为
*
(这是其中的第一个)对其进行索引:


当然,您可以根据需要将表格设置得尽可能大,并直接索引。

不需要类型转换。看看我的答案。-1-这是不正确的。(这就是
char
的含义,但这并不意味着答案是“否”。)我误读为指向整个数组对象,而不仅仅是索引。这么晚才回答!对不起@Paulo非常感谢,我很难理解“char操作符=…;”代表什么。这只是一个使用示例。。。例如,您可以通过读取输入或诸如此类的内容来获取char。我只是假设你在某个地方已经有了正确的字符,并希望得到正确的操作。对,我希望用户输入字符,它将得到正确的计算方法。那么,你的问题是如何让用户输入字符?也许最好把这当作一个新问题来问,因为它取决于很多因素。如果您希望像示例中那样将此char作为命令行参数,那么应该查看
String.charAt()
method.performance不是问题,我将对此进行研究。谢谢guys@Java如果性能不是一个问题,为什么不呢?实际上,它们在性能方面大致相同。在我的机器上,运行数组查找版本每次查找大约需要22纳秒,而映射版本每次查找大约需要30纳秒。要使差异有意义还需要很长时间。这意味着500000000个数组查找大约需要10秒,而映射版本大约需要15秒。Stephen,因此基本上将有2个数组(jumptable和字符数组)。我理解正确吗?我不太理解你的问题,但我认为答案是否定的。这是家庭作业吗?哈哈,没有学校离我太远了,我正在读一本关于设计模式的书,对我来说,最好的理解方式就是通过实际练习算法,这就是我试图弄清楚每种策略是如何实现和使用的why@Java豆子-我想我明白你现在在说什么了。答案肯定是否定的。你只需要一个数组:你所说的“jumpTable”。。。虽然这是一个用词不当,因为这里没有“跳跃”。然后,在
jumpTable['+']
处安排数组填充(例如)一个
加法
实例。(我并不是说额外的编码涉及到一个值得的……只是这是实现这一点的一种方式。)顺便说一下,对于这种类型,单数名
操作
可能比复数
操作
更合适。
Operations[] jumptable = {
   new Multiplication(),  // * = 42 = '*' + 0
   new Addition(),        // + = 43 = '*' + 1
   null,                  // , = 44 
   new Subtraction(),     // - = 45 = '*' + 3
   null,                  // . = 46
   new Division()         // / = 47 = '*' + 5
};

char operator = ...;

Operation op = jumptable[operator - '*'];