2016-04-24 64 views
0

我做一个功课计算器,除了我的扫描仪,一切正常工作,因为当它需要一个负整数它不会看到它是一个负数,它只是看到减法符号作为操作符,我希望它看起来像是一部分操作数:插入后缀读取负整数作为负

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

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

但具有负数它不得到正确​​! 所以这就是我想要的帮助,预先感谢

回答

0

LinkedList <String>list= new LinkedList<String>(); 只是采取字符串中的每个字符,并将每个字符添加到结果列表。而不是这样做,你需要编写语法感知代码。如果你可以坚持所有标记之间的空白,那么你可以分割空间with, for example, String.split。如果不是,最简单的选择是迭代字符串中的字符“手动”并以此方式创建输出。

虽然我想这也可以使用String.split与非捕获正向前查找也分裂运营商,找出正则表达式来掌握这个水平比代码解决问题更困难。我不能举一个积极的lookahead断言实现的例子,因为我不想花时间来运行开发环境,编写代码,创建测试用例和调试它 - 因为我不认为这是无论如何你应该采取的做法。

+0

你能给我一个关于如何在这种情况下使用split的例子吗?我一直在谷歌搜索,但真的找不到一个很好的例子,在此先感谢 – JohnBanana

+0

@JohnBanana:done –