0

我正在为学校作业做一个计算器,除了我的扫描仪之外,一切都可以工作,因为当它需要一个负整数时,它不会将其视为负数,它只会将减法符号视为运算符,我希望它像操作数的一部分一样看待它:

String exp = "8+4*-12-4";
    String[] temp = new String[exp.length()];
    temp =exp.split("(?<=[-+*/])|(?=[-+*/])");

如果它只有正整数,这使它正确。例如输入:8+4*12-4 和输出:[8, 4, 12, *, +, 4, -]

但如果是负数,它就不会正确!所以这就是我想要帮助的,在此先感谢

4

1 回答 1

0

LinkedList <String>list= new LinkedList<String>(); 只需获取字符串中的每个字符并将每个字符添加到结果列表中。您需要编写语法感知代码,而不是这样做。如果您可以坚持在所有标记之间使用空格,那么您可以使用例如String.split. 如果没有,最简单的替代方法是“手动”迭代字符串中的字符并以这种方式创建输出。

虽然我认为也可以使用String.split非捕获正向前瞻来拆分运算符,但将正则表达式弄清楚到那种掌握程度比解决代码中的问题更困难。我不能举一个正面的前瞻断言实现的例子,因为我不想花时间运行一个开发环境、编写代码、创建测试用例和调试它——因为我不认为这是在任何情况下都应该采取的方法。

于 2016-04-24T09:56:44.347 回答