这是我的任务,给定一个由一串字母和运算符(加号、减号和字母。IE:'b-d+e-f')组成的表达式的输入和一个带有一组变量/的文件用逗号分隔的值对(即:a=1,b=7,c=3,d=14)编写一个程序,输出输入表达式的结果。例如,如果表达式输入为 ("a + b+c -d") 并且文件输入为 (a=1,b=7,c=3,d=14),则输出将为 -3。嗨,我正在尝试做一个简单的 java 代码,如果我添加 4 个字母,它会输出一个数字。当我做不同的组合(如 d-c+a+b)时,它会给我一个错误的数字,如 118.0。有人可以告诉我我的代码在哪里我的计算是错误的..
谢谢
ValVarPairs.txt 包含这些数字-> a=100,b=5,c=10,d=13
这是我编码的。
package com.ecsgrid;
import java.io.*;
public class testC {
public static void main(String[] args) {
int i = 0,j = 0;
double result, values[] = new double[4];
char k, operators[] = new char[3];
for (i = 0; i <= 2; i++)
operators[i] = '+'; // default is to add the values
File myfile;
StreamTokenizer tok;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String InputText;
i = 0;
try {
myfile = new File("C:\\VarValPairs.txt");
tok = new StreamTokenizer(new FileReader(myfile));
tok.eolIsSignificant(false);
while ((tok.nextToken() != StreamTokenizer.TT_EOF) && (i <= 3)){
if ((tok.ttype == StreamTokenizer.TT_NUMBER))
values[i++] = tok.nval;
}
}
catch(FileNotFoundException e) { System.err.println(e); return; }
catch(IOException f) { System.out.println(f); return; }
System.out.println("Enter letters and operators:");
try {
InputText = in.readLine();
}
catch(IOException f) { System.out.println(f); return; }
for (i = 0; i < InputText.length(); i++)
{
k = InputText.charAt(i);
if ((k == '+') || (k == '-'))
{
if (j <= 2) operators[j++] = k;
}
}
result = values[0];
for (i = 0; i <= 2; i++){
if (operators[i] == '+')
result = result + values[i+1];
else
result = result - values[i+1];
}
System.out.println(result);
}
}