问题描述
我正在尝试对计算器进行编码,并且试图创建“ Suboperation”类。 我想从大量输入中生成较小的子操作。例如: (4 + 5)是由ParamA(4)ParamB(5)和Operator(+)组成的子运算。 问题是,我想这样做(4+(6 + 5))是另一个子操作中的子操作。
我想这会在适当的时候给我带来问题,但是我还不能克服输入识别部分。
我设法使它获得字符串“(4 + 5)/(6-8)”,并将其在(4 + 5)和(6-8)之间分开。 问题出在我尝试获得... 这个:((4 + 5)-7)
进入此:(4 + 5),(4 + 5)-7。
我试图将开括号和闭括号索引保存在不同的数组中, 然后找出一种模式来获取子字符串,但是我被卡住了。
类似这样的东西:
public ArrayList findOperations(){
ArrayList<String> operations = new ArrayList();
ArrayList<Integer> start = new ArrayList();
ArrayList<Integer> end = new ArrayList();
int index = 0;
for (char c : this.input.toCharArray()) {
if (Character.toString(c).equals("(")) {
start.add(index);
}
if (Character.toString(c).equals(")")) {
end.add(index);
}
}
int indexNow=0;
for(int st:start){
if(start.get(indexNow++)>end.get(indexNow)){
operations.add(input.substring(st,end.get(indexNow)));
}
else{
break;
}
indexNow++;
}
return operations;
}
说明: 我想要一个这样的方法并输入: “(((4 + 5)-6)” 并返回这样的字符串数组: [“(4 + 5)-6”,“ 4 + 5”]
有什么想法吗?自从我开始学习以来,这是我第一次需要严重的帮助。谢谢您的耐心等候。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)