-2

给定一个带有输入的文件:

Formula: m = (y - c) / x
Formula: m = y + c^2

我想在 java 中实现每个公式来求解 m,这样在这种情况下我会得到 2 个答案。我必须这样做,因为单独为每个公式编码对于我需要的所有公式来说太耗时了。

到目前为止,我下面的代码只是检测并隔离了每个公式。出于此问题的目的,我还删除了用户输入。

int y = 8;
int c = 2;
int x = 2;

    try{
       FileInputStream fstream = new FileInputStream("Filename");

        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String strLine;

        while((strLine = br.readLine()) != null){
            if(strLine.startsWith("Formula")){
                String standAloneFormula = strLine.replace("Formula: ", "");
                System.out.println(standAloneFormula);
            }
        }
    }
    catch(Exception e){
        System.out.print(e);

我遇到的主要问题是访问代码,然后将整数值应用于字符串值。在这种情况下,解决m的最简单方法是什么?

任何想法、链接或相关代码将不胜感激。

问候。

4

1 回答 1

1

尝试使用复合模式为方程创建一个简单的对象模型。您可以将每个输入行分解为单个表达式,可能包含其他表达式作为操作数。然后你可以calculate(HashMap<String, Integer> values)在你的所有类中定义一个方法,这里values就是你计算中可能出现的所有变量的定义。通过递归调用该方法,您最终应该得到结果。

对于您希望支持的每个数学运算,您将需要一个类,例如加法、减法、否定,......

解析字符串和构建对象层次结构实际上是最困难的任务。使用波兰符号或更容易解析的东西会容易得多。

总体而言,建议使用更适合解决数学问题的工具,而不是尝试自己编写代码。也许甚至 Excel 可能会有所帮助。

于 2013-01-14T11:47:48.657 回答