String 如何通过圆括号将字符串拆分为子字符串,同时又将子字符串放在其他子字符串中?
我试图编写一个计算器,并试图创建一个“子操作”类。 我想从一个大的输入中生成更小的子操作。例如: (4+5)是由ParamA(4)ParamB(5)和运算符(+)组成的子操作。 问题是,我想让它(4+(6+5))是另一个内部的子操作 我想它会在适当的时候给我带来问题,但我还不能忘记输入识别部分 我设法让它得到这个字符串“(4+5)/(6-8)”,并将它在(4+5)和(6-8)之间分开。 问题在于当我试图得到。。。 这个:((4+5)-7) 分为:(4+5),(4+5)-7 我试图在不同的数组上保存左括号和右括号索引, 然后找出一个模式来获得子字符串,但我被卡住了 大概是这样的: 公共ArrayList findOperations(){String 如何通过圆括号将字符串拆分为子字符串,同时又将子字符串放在其他子字符串中?,string,algorithm,substring,calculator,parentheses,String,Algorithm,Substring,Calculator,Parentheses,我试图编写一个计算器,并试图创建一个“子操作”类。 我想从一个大的输入中生成更小的子操作。例如: (4+5)是由ParamA(4)ParamB(5)和运算符(+)组成的子操作。 问题是,我想让它(4+(6+5))是另一个内部的子操作 我想它会在适当的时候给我带来问题,但我还不能忘记输入识别部分 我设法让它得到这个字符串“(4+5)/(6-8)”,并将它在(4+5)和(6-8)之间分开。 问题在于当我试图得到。。。 这个:((4+5)-7) 分为:(4+5),(4+5)-7 我试图在不同的数组上保
ArrayList operations=new ArrayList();
ArrayList start=新建ArrayList();
ArrayList end=新的ArrayList();
int指数=0;
for(char c:this.input.toCharArray()){
if(Character.toString(c).equals(“”){
开始。添加(索引);
}
if(Character.toString(c).equals(“)”){
结束。添加(索引);
}
}
int indexNow=0;
用于(int st:start){
if(start.get(indexNow++)>end.get(indexNow)){
add(input.substring(st,end.get(indexNow));
}
否则{
打破
}
indexNow++;
}
返回操作;
}
澄清:
我想要一个像这样获取和输入的方法:
"((4+5)-6)"
并返回如下字符串数组:
[“(4+5)-6”,“4+5”]
有什么想法吗?这是我第一次开始学习,我觉得我需要一些认真的帮助。感谢您的耐心。我发现从解释/示例中不容易理解您试图实现的目标分类:我想要一个方法,它获取和输入如下:((4+5)-6)”并返回如下字符串数组:[(4+5)-6”,“4+5”]提示:使用递归函数比严格使用迭代循环更容易处理括号。同意stef。尝试一些递归练习,然后重新讨论这个问题。也许你遇到了一个更难的问题,你现在可以自己解决。我还没有找到一个正确的答案,所以我有一个想法:改为“由内而外”?
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;
}