package com.ralf.stack.expr;
import java.util.ArrayList;
public class ExprIterator {
private int operPos;
private int numPos;
private ArrayList<String> operateList = new ArrayList<>();
private ArrayList<String> numList = new ArrayList<>();
public ExprIterator(String exprString) {
char[] chs = exprString.toCharArray();
transToString(chs);
}
public Integer nextNumString() {
if (hasNextNum()) {
return Integer.parseInt(numList.get(numPos++));
}
return null;
}
public String nextOperateString() {
if (hasNextOperate()) {
return operateList.get(operPos++);
}
return null;
}
public boolean hasNextNum() {
return numPos < numList.size();
}
public boolean hasNextOperate() {
return operPos < operateList.size();
}
private void transToString(char[] chs) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < chs.length; i++) {
if (chs[i] == '+' || chs[i] == '-' || chs[i] == '*'
|| chs[i] == '/') {
numList.add(stringBuilder.toString());
operateList.add(String.valueOf(chs[i]));
stringBuilder.delete(0, stringBuilder.length());
}
else {
stringBuilder.append(chs[i]);
}
}
numList.add(stringBuilder.toString());
}
}