我正在为学校作业做一个计算器,除了我的扫描仪之外一切正常,因为当它采用负整数时它不会将它看作负数而只是看到减法符号作为运算符而我希望它看起来像一个部分操作数:
String exp = "8+4*-12-4";
String[] temp = new String[exp.length()];
temp =exp.split("(?<=[-+*/])|(?=[-+*/])");
如果只有正整数,这就是正确的。 例如 输入:8 + 4 * 12-4 和 输出:[8,4,12,*,+,4, - ]
但是负数却无法正常使用! 所以这就是我想要的帮助,提前谢谢
答案 0 :(得分:0)
LinkedList <String>list= new LinkedList<String>();
只需获取字符串中的每个字符,然后将每个字符添加到结果列表中。而不是这样做,你需要编写语法感知代码。如果您可以坚持所有令牌之间的空白区域,那么您可以拆分空格with, for example, String.split
。如果没有,最简单的替代方法是“手动”遍历字符串中的字符并以此方式创建输出。
虽然我认为也可以使用String.split
非捕获正向前瞻来分割运算符,但将正则表达式计算到该级别的精通比解决代码中的问题更困难。我不能给出积极的前瞻断言实现的例子,因为我不想花时间来运行开发环境,编写代码,创建测试用例并调试它 - 因为我不认为这是无论如何你应该采取的方法。