如何在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]。等于(“*”){