我正在尝试使用一个简单的String语句并解析它以打印出一个简单的答案。
到目前为止,我无法弄清楚为什么我一直得到错误的答案。
比如说 - 我用" 2 * 3 * 4 * 5/2/3/2"插入一个字符串。
预期答案是10,但我收到了1.5
的答案有人能在这看到这个问题吗?我假设这不是一个操作顺序的例子(我还没有那么远)。
public class TestingforExcel {
static String tableholder = "2 * 3 * 4 * 5 / 2 / 3 / 2";
public static void main(String args[]){
String[] fracEquationHolder = tableholder.split(" ",tableholder.length()); // holds the fractions and operator
String operators = "";
double operand;
double operand2;
double answer = 0;
for(int i =0; i <= (fracEquationHolder.length-2); i+=2){
operators = fracEquationHolder[i+1];
operand = Double.parseDouble(fracEquationHolder[i]);
operand2 = Double.parseDouble(fracEquationHolder[i+2]);
if(operators.indexOf("+")>=0){
answer = operand + operand2;
}else if(operators.indexOf("-")>=0){
answer = operand - operand2;
}else if(operators.indexOf("*")>=0){
answer = operand * operand2;
}else if(operators.indexOf("/")>=0){
answer = operand / operand2;
}else
System.out.print(answer+"");
}
System.out.print(answer+"");
}
答案 0 :(得分:0)
您总是使用operand
和operand2
进行计算。但如果answer
中有一些先前的值,那么您应该使用answer
计算operand2
。使用以下
if(answer > 0)
operand = answer;
else
operand = Double.parseDouble(fracEquationHolder[i]);
另外我只是指出你的代码不是逻辑的问题。您的代码不遵循BODMAS规则。所以实施那部分
答案 1 :(得分:0)
在第一次迭代中,您必须阅读2个操作数。从第二个运算符使用上一个操作的答案作为操作数1。
答案 2 :(得分:0)
public class TestingforExcel {
static String tableholder = "2 * 3 * 4 * 5 / 2 / 3 / 2";
public static void main(String args[]){
String[] fracEquationHolder = tableholder.split(" ",tableholder.length()); // holds the fractions and operator
String operators = "";
double operand;
double operand2;
double answer = Double.parseDouble(fracEquationHolder[0]);
for(int i =0; i <= (fracEquationHolder.length-2); i+=2){
operators = fracEquationHolder[i+1];
operand = Double.parseDouble(fracEquationHolder[i]);
operand2 = Double.parseDouble(fracEquationHolder[i+2]);
if(operators.indexOf("+")>=0){
answer += operand2;
}else if(operators.indexOf("-")>=0){
answer -= operand2;
}else if(operators.indexOf("*")>=0){
answer *= operand2;
}else if(operators.indexOf("/")>=0){
answer /= operand2;
}else
System.out.print(answer+"");
}
System.out.print(answer+"");
}
你必须遇到问题:
1-你得到1.5,因为这是最后一次操作(3/2) 你应该使用(回答+ =操作数+操作数2)
2-你应该使用最后一个操作的总和而不是操作数