在Java计算器程序中存储统计信息

时间:2015-11-10 17:24:56

标签: java

使用Eclipse在Java中创建基本的postfix表达式计算器/计算器程序。我希望能够存储一些统计数据(如下所列)

•最高的总体结果值 •总体结果值最低 •总值(所有答案加在一起) •平均答案(来自所有表达式的所有答案) •输入的无效表达式总数 •输入的有效表达式总数

当前代码:http://pastebin.com/EijjR6jq

感谢任何指导,谢谢。

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是创建一个arraylist来存储值(打印前)。这个arraylist将包含您到目前为止所获得的所有值。对它进行排序将为您提供最高/最低的整体价值,并将其总结为&将该总和除以arraylist中的元素数量将得到总和值&平均答案。

对于无效和有效的表达式,可以实现计数器以跟踪这些表达式。根据输入的表达式递增相应的计数器(有效/无效)。

例如,它看起来如下所示。

Scanner input = new Scanner(System.in);    
int invalidNumberExpressions = 0; //counter for invalids
int validNumberExpressions = 0; //counter for valids
ArrayList<String> values = new ArrayList<String>(); //Arraylist for calculated values

while (true) {

... //Omitted

if ("+".equals(part3)) {
    // Note that your calculation ends up with a string, and not a float
    values.add(part1 + " " + part3 + " " + part2 + " " + " = " + (number1 + number2));
    System.out.println(values.get(validNumberExpressions));
    validNumberExpressions++;
}

// Omitted

还可以考虑使用switch语句&amp;将两个部分中的代码的公共部分重构为另一个方法,这样您就不必重复整个部分两次。看起来也更干净。

如下所示的switch语句。我会把重构部分留给你。

switch (part3) {
    case "+":   values.add(part1 + " " + part3 + " " + part2 + " " + " = " + (number1 + number2));
                System.out.println(values.get(validNumberExpressions));
                validNumberExpressions++;
                break;

    ... //other cases here
}