写一个计算器

public class Calculator {
    public static void main(String[] args) {
        //写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现。
        //◆思路推荐:
        //写4个方法:加减乘除
        //利用循环+ switch进行用户交互
        //传递需要操作的两个数
        //输出结果
        boolean loop = true;
        Scanner scanner = new Scanner(System.in);
        while (loop) {
            System.out.println("请输入第一个数字:");
            double num1 = scanner.nextDouble();
            System.out.println("请输入第二个数字:");
            double num2 = scanner.nextDouble();
            System.out.println("请继续输入你要选择的:1 +; 2 -; 3 *; 4 /");
            String operator = scanner.next();//在读取 double 数字后,输入缓冲区中仍然留有一个回车符('\n'),
					     //因此在读取操作符时,scanner.nextLine() 会读取输入缓冲区中的回车符,
					     //导致实际上没有读取到操作符,直接跳转到了 default 分支执行.
					     //如果使用 scanner.next(),它只会读取输入缓冲区中的下一个字符串,而不会读取回车符,所以这个问题就不会出现

            double result = 0.0;
            switch (operator) {
                case "+":
                    result = add(num1, num2);
                    break;
                case "-":
                    result = sub(num1, num2);
                    break;
                case "*":
                    result = mul(num1, num2);
                    break;
                case "/":
                    if (num2 == 0) {
                        System.out.println("输入不能为零,请重新输入");
                        continue;
                    }
                    result = div(num1, num2);
                    break;
                default:
                    System.out.println("输入错误,请重新输入");
                    continue;
            }
            System.out.println("运算结果为" + result);
            System.out.println("继续输入请按Y,否则请按N");
            String input = scanner.next();
            if ("N".equalsIgnoreCase(input)) {
                loop = false;
            }
        }
        scanner.close();

    }

    public static double add(double... numbers){//加法
        double result = numbers[0];
        for (int i = 1; i < numbers.length ; i++) {
            result += numbers[i];
        }
        return result;
    }

    public static double sub(double... numbers){//减法
        double result = numbers[0];
        for (int i = 1; i < numbers.length ; i++) {
            result -= numbers[i];
        }
        return result;
    }

    public static double mul(double... numbers){//乘法
        double result = numbers[0];
        for (int i = 1; i < numbers.length ; i++) {
            result *= numbers[i];
        }
        return result;
    }

    public static double div(double... numbers){//除法
        double result = numbers[0];
        for (int i = 1; i < numbers.length ; i++) {
            result /= numbers[i];
        }
        return result;
    }
}

posted on 2023-03-23 01:24  盗版太极  阅读(26)  评论(0)    收藏  举报

导航