我试图从数组列表中读取符号,然后对其前后的两个数字进行表达式(例如, i-1 * i+1) 。然而,生成的结果总是 5、6 或 12!我真的找不到代码中的问题所在。
我使用 arraylist 是因为它比数组更动态,从某种意义上说,我可以删除元素而不用关心“数组”的长度。
String replaceStr = replacer.replace("+", " + ");
我正在尝试添加空格以将整数作为一个元素,而不是使用 charAt,这将不允许我将一个多于一位的数字带入等式。
Double Computing(String equation) {
double result = 0.0;
double multiplResult = 1.0; //
String replacer = equation;
String replaceStr = replacer.replace("+", " + ");
String replaceStr1 = replaceStr.replace("x", " x ");
String replaceStr2 = replaceStr1.replace("-", " - ");
String replaceStr3 = replaceStr2.replace("/", " / ");
String[] items = replaceStr3.split("\\s*");
ArrayList<String> list = new ArrayList<String>((Arrays.asList(items)));
for (int i = 0; i < list.size(); i++ ) {
String NewNum;
if (list.get(i) == "x" || list.get(i) == "/"){
if(list.get(i) == "x") {
NewNum = String.valueOf(Double.parseDouble(list.get(i - 1)) * Double.parseDouble(list.get(i + 1)));
list.set(i, NewNum);
list.remove(i-1);
list.remove(i+1);
}
else if (list.get(i) == "/"){
NewNum = String.valueOf(Double.parseDouble(list.get(i - 1)) / Double.parseDouble(list.get(i + 1)));
list.set(i, NewNum);
list.remove(i-1);
list.remove(i+1);
}
multiplResult *= Double.parseDouble(list.get(0));
}
if (list.get(i) == "+" || list.get(i) == "-"){
if(list.get(i) == "+") {
NewNum = String.valueOf(Double.parseDouble(list.get(i - 1)) + Double.parseDouble(list.get(i + 1)));
list.set(i, NewNum);
list.remove(i-1);
list.remove(i+1);
}
}
multiplResult *= Double.parseDouble(list.get(0));
}
result += multiplResult;
}
return result;
}
繁星coding
相关分类