如何在java中从后缀计算器结果生成统计信息?

如何在java中从后缀计算器结果生成统计信息?,java,postfix-notation,rpn,Java,Postfix Notation,Rpn,我写了一个后缀计算器,它从键盘和文本文件中获取值。如果表达式无效,它将给出错误提示。现在,我需要根据计算的表达式结果生成一些统计信息。具体而言,评估完成后,应收集并显示六种不同的统计数据 最高的总体结果值 最低的总体结果值 所有结果值的总和,即所有结果相加 平均结果值 无效表达式的总数 已处理的有效表达式的总数 在程序终止之前,统计数据应显示如下- Evaluations complete Highest result: 1024.5 Lowest result: -120 Aggreg

我写了一个后缀计算器,它从键盘和文本文件中获取值。如果表达式无效,它将给出错误提示。现在,我需要根据计算的表达式结果生成一些统计信息。具体而言,评估完成后,应收集并显示六种不同的统计数据

  • 最高的总体结果值
  • 最低的总体结果值
  • 所有结果值的总和,即所有结果相加
  • 平均结果值
  • 无效表达式的总数
  • 已处理的有效表达式的总数
在程序终止之前,统计数据应显示如下-

Evaluations complete
Highest result: 1024.5 
Lowest result: -120 
Aggregate result: 2212 
Average result: 340 
Invalid expressions: 6 
Valid expressions: 150
注意:如果有效表达式的数量为零,则最高、最低和平均值应显示为n/a

我正在为这部分而挣扎,不知道从哪里开始。任何帮助都将不胜感激。谢谢

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class PostfixCalc {
public static void main(String[] args) {

    String filename = "";
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Press K for keyboard or F to read expressions from a file");
    String user_input = keyboard.nextLine();
    String[] ui = user_input.split(" ");
    if (ui[0].equals( "k") | ui[0].equals("K")) {
        while (true){
            System.out.println("Please Enter a Post-Fix Expression (eg: 5 2 *)");
            String postfix=keyboard.nextLine();
            String [] elements =postfix.split(" ");


            if (postfix.equals("")){
                System.out.println("Application Closed");
                keyboard.close();
                System.exit(0);
                }
            if (elements.length >=3){
                try{
                    float num1, num2;
                    num1 = Float.parseFloat(elements[0]);
                    num2 = Float.parseFloat(elements[1]);

                        if(elements[2].equals("+")){
                            System.out.println("Total: "+(num1 + num2));
                        }
                        else if(elements[2].equals("*")){
                            System.out.println("Total: "+(num1 * num2));
                        }
                        else if(elements[2].equals("/")){
                            System.out.println("Total: "+(num1 / num2));
                        }
                        else if(elements[2].equals("-")){
                            System.out.println("Total: "+(num1 - num2));
                        }
                        else{
                            System.out.println("Error Invalid Expression: "+ postfix);
                        }
                }
                catch(NumberFormatException e){
                    System.out.println("Error Invalid Expresion: "+postfix);
                    }
                }
                else if  (elements.length <3) {
                    System.out.println("Error Invalid Expression: "+ postfix);
                }               
        }           
    } else if (ui[0].equals("f") || ui[0].equals("F")) {
        try {
            System.out.println("Please enter file name eg: Demo.txt");
            filename = keyboard.nextLine();
            Scanner s = new Scanner(new File(filename));
            System.out.println("Processing " + filename);
            System.out.println();
            String line = s.nextLine();
            String array[] = line.split(" ");
            if (array.length >= 3) {
                try {
                    float array1, array2, total1, total2, total3, total4, array3, array5;
                    array1 = Float.parseFloat(array[0]);
                    array2 = Float.parseFloat(array[1]);
                    total1 = array1 + array2;
                    total2 = array1 * array2;
                    total3 = array1 / array2;
                    total4 = array1 - array2;

                    if (array[2].equals("+")) {
                        System.out.println("Postfix Expression: " + line);
                        System.out.println(array1 + " " + array[2] + " " + array2 + " = " + total1);
                        System.out.println();
                    } else if (array[2].equals("*")) {
                        System.out.println("Postfix Expression: " + line);
                        System.out.println(array1 + " " + array[2] + " " + array2 + " = " + total2);
                        System.out.println();
                    } else if (array[2].equals("/")) {
                        System.out.println("Postfix Expression: " + line);
                        System.out.println(array1 + " " + array[2] + " " + array2 + " = " + total3);
                        System.out.println();
                    } else if (array[2].equals("-")) {
                        System.out.println("Postfix Expression: " + line);
                        System.out.println(array1 + " " + array[2] + " " + array2 + " = " + total4);
                        System.out.println();
                    } else {
                        System.out.println(" Error Invalid Expression: " + line);
                        System.out.println();
                    }
                } catch (NumberFormatException e) {
                    System.out.println(" Error Invalid Expresion: " + line);
                    System.out.println();
                }
            } else if (array.length < 3) {
                System.out.println(" Error Invalid Expression: " + line);
                System.out.println();
            }
            while (s.hasNext()) {
                String nl = s.nextLine();
                String ar[] = nl.split(" ");
                if (ar.length >= 3) {
                    try {
                        float ar1, ar2, total1, total2, total3, total4;
                        ar1 = Float.parseFloat(ar[0]);
                        ar2 = Float.parseFloat(ar[1]);
                        total1 = ar1 + ar2;
                        total2 = ar1 * ar2;
                        total3 = ar1 / ar2;
                        total4 = ar1 - ar2;

                        if (ar[2].equals("+")) {
                            System.out.println("Postfix Expression: " + nl);
                            System.out.println(ar1 + " " + ar[2] + " " + ar2 + " = " + total1);
                            System.out.println();
                        } else if (ar[2].equals("*")) {
                            System.out.println("Postfix Expression: " + nl);
                            System.out.println(ar1 + " " + ar[2] + " " + ar2 + " = " + total2);
                            System.out.println();
                        } else if (ar[2].equals("/")) {
                            System.out.println("Postfix Expression: " + nl);
                            System.out.println(ar1 + " " + ar[2] + " " + ar2 + " = " + total3);
                            System.out.println();
                        } else if (ar[2].equals("-")) {
                            System.out.println("Postfix Expression: " + nl);
                            System.out.println(ar1 + " " + ar[2] + " " + ar2 + " = " + total4);
                            System.out.println();
                        } else {
                            System.out.println(" Error Invalid Expression: " + nl);
                            System.out.println();
                        }
                    } catch (NumberFormatException e) {
                        System.out.println(" Error Invalid Expresion: " + nl);
                        System.out.println();
                    }

                } else if (array.length < 3) {
                    System.out.println(" Error Invalid Expression: " + nl);
                    System.out.println();
                }

            }

        }

        catch (FileNotFoundException e) {
            System.out.println("Error: That file does not exist, please re-enter: ");
            filename = keyboard.nextLine();
            Scanner s;

        }
    } else {
        System.out.println("Neither K or F have been entered");
        System.out.println("System Terminated");
        keyboard.close();
    }

}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.Scanner;
公共类PostfixCalc{
公共静态void main(字符串[]args){
字符串filename=“”;
扫描仪键盘=新扫描仪(System.in);
System.out.println(“按K键输入键盘或按F键从文件中读取表达式”);
字符串user_input=keyboard.nextLine();
字符串[]ui=user\u input.split(“”);
如果(ui[0].equals(“k”)| ui[0].equals(“k”)){
while(true){
System.out.println(“请输入一个后缀表达式(例如:52*)”;
字符串后缀=keyboard.nextLine();
String[]elements=postfix.split(“”);
if(后缀为等于(“”){
System.out.println(“应用程序关闭”);
键盘关闭();
系统出口(0);
}
如果(elements.length>=3){
试一试{
浮点数num1,num2;
num1=Float.parseFloat(元素[0]);
num2=Float.parseFloat(元素[1]);
if(元素[2]。等于(“+”){
系统输出打印项次(“总计:”+(num1+num2));
}
else if(元素[2]。等于(“*”){
系统输出打印项次(“总计:+(num1*num2));
}
else if(元素[2]。等于(“/”){
系统输出打印项次(“总计:+(num1/num2));
}
else if(元素[2]。等于(“-”){
System.out.println(“总计:”+(num1-num2));
}
否则{
System.out.println(“错误无效表达式:“+postfix”);
}
}
捕获(数字格式){
System.out.println(“错误无效表达式:+postfix”);
}
}
else if(elements.length=3){
试一试{
浮动阵列1、阵列2、总计1、总计2、总计3、总计4、阵列3、阵列5;
array1=Float.parseFloat(数组[0]);
array2=Float.parseFloat(数组[1]);
总计1=阵列1+阵列2;
总计2=阵列1*2;
总计3=阵列1/阵列2;
总计4=阵列1-阵列2;
if(数组[2]。等于(“+”){
System.out.println(“后缀表达式:“+line”);
System.out.println(数组1+“”+数组[2]+“”+数组2+“”=“+total1);
System.out.println();
}else if(数组[2]。等于(“*”){
System.out.println(“后缀表达式:“+line”);
System.out.println(数组1+“”+数组[2]+“”+数组2+“”=“+total2);
System.out.println();
}else if(数组[2]。等于(“/”){
System.out.println(“后缀表达式:“+line”);
System.out.println(数组1+“”+数组[2]+“”+数组2+“”=“+total3);
System.out.println();
}else if(数组[2]。等于(“-”){
System.out.println(“后缀表达式:“+line”);
System.out.println(数组1+“”+数组[2]+“”+数组2+“”=“+总计4);
System.out.println();
}否则{
System.out.println(“错误无效表达式:“+行”);
System.out.println();
}
}捕获(数字格式){
System.out.println(“错误无效表达式:+行”);
System.out.println();
}
}else if(array.length<3){
System.out.println(“错误无效表达式:“+行”);
System.out.println();
}
而(s.hasNext()){
字符串nl=s.nextLine();
字符串ar[]=nl.split(“”);
如果(应力长度>=3){
试一试{
浮动ar1、ar2、total1、total2、total3、total4;
ar1=Float.parseFloat(ar[0]);
ar2=Float.parseFloat(ar[1]);
total1=ar1+ar2;
total2=ar1*ar2;
total3=ar1/ar2;
total4=ar1-ar2;
if(ar[2]。等于(“+”){
System.out.println(“后缀表达式:“+nl”);
System.out.println(ar1+“”+ar[2]+“”+ar2+“”=“+total1);
System.out.println();
}else if(ar[2]。等于(“*”){