package cn.vscoder.experiment_1;

import java.util.Scanner;

public class task {
    // 循环标记
    private static boolean TAG = true;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while (TAG) {
            // 显示菜单
            menu();

            int chose = check_choose_num(sc);

            switch (chose) {
                case 404 -> System.out.println("输入错误，请重新输入阿拉伯数字");
                case 1 -> start(sc);
                case 2 -> {
                    System.out.println("结束");
                    TAG = false;
                }
                default -> System.out.println("选择错误，请重新选择！");
            }
        }
    }

    // TODO. 主函数
    public static void start(Scanner sc) {
        // 存款金额
        double amount = check_amount_num(sc);
        if (amount == 0) {
            System.out.println("退出");
            return;
        }
        // 存款期限
        int time = check_time_num(sc);
        if (time == 0) {
            System.out.println("退出");
            return;
        }
        // 年利率
        int rate = check_rate_num(sc);
        if (rate == 0) {
            System.out.println("退出");
            return;
        }

        // 计算总金额
        double total_amount = amount * Math.pow((1 + (rate * 0.01)), time);
        System.out.printf("存款到期后总金额为: %.2f 元。\n", total_amount);
    }

    // TODO. 查存款利率输入函数
    public static int check_rate_num(Scanner sc) {
        while (true) {
            System.out.println("请输入年利率(单位:%,输入0退出)：");
            try {
                String input = sc.next();
                int num = Integer.parseInt(input);
                if (num > 100) {
                    System.out.println("请重新输入的利率小于100%！！！");
                    continue;
                }
                return num;
            } catch (Exception e) {
                System.out.println("输入错误，请重新输入");
            }
        }
    }


    // TODO. 检查存款期限输入函数
    public static int check_time_num(Scanner sc) {
        while (true) {
            System.out.println("请输入存款期限(单位:年,输入0退出)：");
            try {
                String input = sc.next();
                int num = Integer.parseInt(input);
                if (num < 0) {
                    System.out.println("请重新输入的年份大于0！！！");
                    continue;
                }
                return num;
            } catch (Exception e) {
                System.out.println("输入错误，请重新输入");
            }
        }
    }

    // TODO. 检查存款金额输入函数
    public static double check_amount_num(Scanner sc) {
        while (true) {
            System.out.println("请输入存款金额(单位:元,输入0退出)：");
            try {
                String input = sc.next();
                double num = Double.parseDouble(input);

                if (num < 0) {
                    System.out.println("请重新输入的金额大于0！！！");
                    continue;
                }
                return num;
            } catch (Exception e) {
                System.out.println("输入错误，请重新输入");
            }
        }
    }

    // TODO. 检查菜单选择输入函数
    public static int check_choose_num(Scanner sc) {
        System.out.println("请选择：");
        try {
            String input = sc.next();
            return Integer.parseInt(input);
        } catch (Exception e) {
            return 404;
        }
    }

    // TODO. 菜单函数
    public static void menu() {
        System.out.println("******存款利息计算器******");
        System.out.println("输入1：start");
        System.out.println("输入2：exit");
        System.out.println("************************");
    }
}