【问题标题】:How to add a summary report of how many times something has run in Java?如何添加在 Java 中运行了多少次的摘要报告?
【发布时间】:2021-03-23 23:14:00
【问题描述】:

我正在尝试获取用户在退出程序后在计算器中完成问题的次数的总报告。我希望它看起来像这样:

计算器报告
加法题:3
减法问题:0
乘法问题:2
划分问题:1
总问题:6

下面是我的代码。代码的计算器部分有效,我想我已经设置了正确的计数变量,但在用户退出时无法创建报告。

import java.util.Scanner;
import java.math.*;

public class Calculator2
 {
 private static final Scanner askScanner = new Scanner(System.in);
 public static int answer;
 public static int firstNumber;
 public static int secondNumber; //makes variables for the whole class

 //Used for the Report at the end. 
 public static int addCount = 0;
 public static int subCount = 0;
 public static int mulCount = 0;
 public static int divCount = 0;


 public static void main(String[] args) {
    calculator();
    printReport();
 }

 public static void calculator() {


  
  while (true) {
  
     System.out.println("Basic calculator");
     System.out.println("Pick one:");
     System.out.println("(A)ddition");
     System.out.println("(S)ubtraction");
     System.out.println("(M)ultiplication");
     System.out.println("(D)ivision");
     System.out.println("\n(E)xit");
  
     String line = askScanner.nextLine().toUpperCase(); //Allows for any input to be a capitol letter.
     char pick = line.charAt(0);
  
  //uses the input of the user and directs it to the correct opertation
     if(pick == 'A') {
        addition();
     }
     else if(pick == 'S') {
        subtraction();
     }
     else if(pick == 'M') {
        multiplication();
     }
     else if(pick == 'D') {
        division();
     }
     else if(pick == 'E') {
        exit();
     }
     else {
        System.out.println("You need to choose A, S, M, D, or E");
        
     
     }
  } // end while


 }
 //asks the user for the 2 numbers
  private static void getNumbers() {
    System.out.print("Enter you first number: ");
    firstNumber = askScanner.nextInt();
    System.out.print("Enter your second number: ");
    secondNumber = askScanner.nextInt();
    askScanner.nextLine();  
   }
 //the different operations based off what the user wanted to do plus the operation itself
  public static void subtraction() {
    System.out.println("Subtraction");
    getNumbers();
    answer = firstNumber - secondNumber;
    System.out.println("This is the difference of the two numbers:  " + answer);
    subCount++;  
 }

   public static void addition() {
    System.out.println("Addition");
    getNumbers();
    answer = firstNumber + secondNumber;
    System.out.println("This is the sum of the two numbers:  " + answer);
    addCount++; 
 }

 public static void multiplication() {
    System.out.println("Multiplication");
    getNumbers();
    answer = firstNumber * secondNumber;
    System.out.println("This is the product of the two numbers  " + answer);
    mulCount++;  
 }

 public static void division() {
    System.out.println("Division");
    getNumbers();
    try{
       answer = firstNumber / secondNumber; 
       System.out.println("This is the quotient of the two numbers:    " + answer);
    }
    catch (ArithmeticException e) {
       System.out.println("Cannot divide by zero!! Please enter another number to divide by." );
    }
    divCount++; 
   
 }

 public static void exit() {
    System.exit(0);   
   }


 public static void printReport() {
  }
 }

【问题讨论】:

    标签: java calculator


    【解决方案1】:

    每次调用计算器函数时递增的变量非常好。 我会像这样填写 printReport() 方法

    public static void printReport() {
        System.out.println("Calculator Report");
        System.out.println("Addition problems: " + addCount);
        System.out.println("Substraction problems: " + subCount);
        System.out.println("Multiplication problems: " + mulCount);
        System.out.println("Division problems: " + divCount);
        System.out.println("Total Problems: " + (addCount + subCount + mulCount + divCount));
    }
    

    并将退出方法更改为

    public static void exit() {
        Calculator2.printReport();
        System.exit(0);
    }
    

    请务必在 exit() 方法中调用 printReport() 方法。并在 System.exit(0); 之前执行。线。否则不会执行。

    如果需要,您可以复制此代码。我为你实现了这些方法:

    import java.util.Scanner;
    import java.math.*;
    
    public class Calculator2
    {
        private static final Scanner askScanner = new Scanner(System.in);
        public static int answer;
        public static int firstNumber;
        public static int secondNumber; //makes variables for the whole class
    
        //Used for the Report at the end.
        public static int addCount = 0;
        public static int subCount = 0;
        public static int mulCount = 0;
        public static int divCount = 0;
    
    
        public static void main(String[] args) {
            calculator();
            printReport();
        }
    
        public static void calculator() {
            while (true) {
    
                System.out.println("Basic calculator");
                System.out.println("Pick one:");
                System.out.println("(A)ddition");
                System.out.println("(S)ubtraction");
                System.out.println("(M)ultiplication");
                System.out.println("(D)ivision");
                System.out.println("\n(E)xit");
    
                String line = askScanner.nextLine().toUpperCase(); //Allows for any input to be a capitol letter.
                char pick = line.charAt(0);
    
                //uses the input of the user and directs it to the correct opertation
                if(pick == 'A') {
                    addition();
                }
                else if(pick == 'S') {
                    subtraction();
                }
                else if(pick == 'M') {
                    multiplication();
                }
                else if(pick == 'D') {
                    division();
                }
                else if(pick == 'E') {
                    exit();
                }
                else {
                    System.out.println("You need to choose A, S, M, D, or E");
    
    
                }
            } // end while
    
    
        }
        //asks the user for the 2 numbers
        private static void getNumbers() {
            System.out.print("Enter you first number: ");
            firstNumber = askScanner.nextInt();
            System.out.print("Enter your second number: ");
            secondNumber = askScanner.nextInt();
            askScanner.nextLine();
        }
        //the different operations based off what the user wanted to do plus the operation itself
        public static void subtraction() {
            System.out.println("Subtraction");
            getNumbers();
            answer = firstNumber - secondNumber;
            System.out.println("This is the difference of the two numbers:  " + answer);
            subCount++;
        }
    
        public static void addition() {
            System.out.println("Addition");
            getNumbers();
            answer = firstNumber + secondNumber;
            System.out.println("This is the sum of the two numbers:  " + answer);
            addCount++;
        }
    
        public static void multiplication() {
            System.out.println("Multiplication");
            getNumbers();
            answer = firstNumber * secondNumber;
            System.out.println("This is the product of the two numbers  " + answer);
            mulCount++;
        }
    
        public static void division() {
            System.out.println("Division");
            getNumbers();
            try{
                answer = firstNumber / secondNumber;
                System.out.println("This is the quotient of the two numbers:    " + answer);
            }
            catch (ArithmeticException e) {
                System.out.println("Cannot divide by zero!! Please enter another number to divide by." );
            }
            divCount++;
    
        }
    
        public static void exit() {
            Calculator2.printReport();
            System.exit(0);
        }
    
    
        public static void printReport() {
            System.out.println("Calculator Report");
            System.out.println("Addition problems: " + addCount);
            System.out.println("Substraction problems: " + subCount);
            System.out.println("Multiplication problems: " + mulCount);
            System.out.println("Division problems: " + divCount);
            System.out.println("Total Problems: " + (addCount + subCount + mulCount + divCount));
        }
    }
    

    【讨论】:

    • 感谢您的回复!将移动所有 System.out.println("calculator report");当用户输入“E”退出程序时,退出正下方部分的以下几行允许查看报告?并删除 Calculator2.printReport();?
    • 到目前为止,报告在程序退出之前打印。所以在用户输入E退出后它会是可见的。我真的不知道移动 System.out.println(" "); 是什么意思到出口的正下方。请澄清,我会帮助你。
    猜你喜欢
    • 1970-01-01
    • 2016-04-05
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多