写一个计算器

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   盗版太极  阅读(16)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示