将每个计算存储为数组中的项

gajydyqb  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(262)

我做了一个控制台计算器,用户可以像这样在一行中输入数字和操作;
5 + 5
按回车键后显示结果如下;
结果:5+5=10
我正在尝试将每个完整的结果存储到一个数组中,以便在用户按下(l)时打印或列出它们,但我无法成功,因为我的代码总是存储最后一次计算。我想当用户按下l时打印计算结果如下:
操作:l
以前的计算:
5 + 5 = 100
4 * 5 = 20
这是我的密码,我提前谢谢你。

public static void main(String[] args) {
        do {
            System.out.print("**********************************************\n"
                    + "Enter L to list previous calculations.\nEnter Q to exit.\n"
                    + "**********************************************\n"
                    + "Operation: ");

            Scanner scan = new Scanner(System.in);
            String input = scan.nextLine();
            String[] operation = input.split(" ");

            if (input.length() < 5) {
                if (input.equals("q")) {
                    System.out.print("\n\n**********************************************\n"
                            + "ByeBye\n"
                            + "**********************************************\n");
                    System.exit(0);
                }
                if (input.equals("l")) {
                    System.out.println("\n\nPrevious Calculations:\n");
                    continue;
                } else {
                    System.out.println("\n\nWrong Operation!!!");
                    continue;

                }
            }

            int first_number = Integer.parseInt(operation[0]);
            int second_number = Integer.parseInt(operation[2]);

            int outcome = 0;

            boolean wrong_operation = false;
            String operator = operation[1];

            switch (operator) {
                case "+":
                    outcome = first_number + second_number;
                    break;
                case "-":
                    outcome = first_number - second_number;
                    break;
                case "*":
                    outcome = first_number * second_number;
                    break;
                case "/":
                    outcome = first_number / second_number;
                    break;
                default:
                    wrong_operation = true;

            }

            String answer;
            String array_item;

            if (wrong_operation) {
                System.out.println("\n\nWrong Operation!!! " + "(" + operator + ")");
            } else {
                answer = String.valueOf(outcome);
                array_item = input + " = " + answer;
                System.out.println("\n\nResult: " + array_item);
                char[] myArray = array_item.toCharArray();
                System.out.println(myArray);
            }

        } while (true);

    }
w41d8nur

w41d8nur1#

您可以声明一个列表来存储de之前的计算 do 声明如下:

public static void main(String[] args) {
        List<String> previousCalculations = new ArrayList<>(); // Declare list
        do {
            System.out.print("**********************************************\n"
                    + "Enter L to list previous calculations.\nEnter Q to exit.\n"
                    + "**********************************************\n"
                    + "Operation: ");
        ...
        ...

然后在显示答案后存储结果

answer = String.valueOf(outcome);
                array_item = input + " = " + answer;
                System.out.println("\n\nResult: " + array_item);

                previousCalculations.add(array_item); // Store results

最后,在选择该选项时打印以前的计算:

if (input.equals("l")) {
                    System.out.println("\n\nPrevious Calculations:");

                    // Print the previous calculations
                    for(String calc : previousCalculations) {
                        System.out.println(calc);
                    }
                    continue;
                } else {
                    System.out.println("\n\nWrong Operation!!!");
                    continue;

                }

相关问题