编写简单的计算器

思路

1.先写四个方法对应加减乘除
2.用scanner来收集用户数据
3.用switch进行匹配
4.输出结果

import java.util.Scanner;
public class Demo11 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        double a = scanner.nextDouble();
        System.out.println("请输入符号:");
        String s = scanner.next();
        System.out.println("请输入第二个数:");
        double b = scanner.nextDouble();

        switch (s){
            case "+":
                System.out.println(add(a,b));
                break;
            case "-":
                System.out.println(subtract(a,b));
                break;
            case "*":
                System.out.println(multiply(a,b));
                break;
            case "/":
                System.out.println(divide(a,b));
                break;

        }
        scanner.close();
    }
    public static double add(double a, double b) {
        return a + b;
    }
    public static double subtract(double a, double b) {
        return a - b;
    }
    public static double multiply(double a, double b) {
        return a * b;
    }
    public static double divide(double a, double b) {
        if (b == 0) {
            System.out.println("算数不合法");
        }
        return a / b;
    }
}

问题

1.在输出nextdouble,nextline,nextdouble时,nextline的数值会被直接跳过
image
而使用next则正常运行
image
具体原因参考
2.在设计程序时要考虑程序合法性
在做除法时,应当注意:除以0应该时不合法的。

参考

参考他人代码

package test;
import java.util.Scanner;
public class Calculator {
        public static void main(String[] args) {
            while (true){
                System.out.println("输入用空格隔开,如:(6 + 9):");
                Scanner sc = new Scanner(System.in);
                double a = sc.nextDouble();

                String s = sc.next();

                double b = sc.nextDouble();

                double result = 0;
                switch (s){
                    case "+":
                        result = add(a,b);
                        break;
                    case "-":
                        result = subtract(a,b);
                        break;
                    case "*":
                        result = multiply(a,b);
                        break;
                    case "/":
                        result = divide(a,b);
                        break;
                    default:
                        System.out.println("输入错误");
                        break;

                }
                System.out.println("输出的结果是:"+a+s+b+"="+result);
            }
        }

        public static double add(double x,double y){
            return  x+y ;

        }
        public static double subtract(double x,double y){
            return x-y;
        }
        public static double multiply(double x,double y){
            return x*y;
        }
        public static double divide(double x,double y){
            if (y==0)
                System.out.println("除数不能为0!");

            return x/y;
        }
    }

1.利用while做了个循环。能够一直计算。
2.可以一次输入数字+符号(中间加空格),来直接表示算式。我的则只能一个一个输入。

结论

没啥结论,多做题,多参考。

posted @   咩咩子的起床气  阅读(483)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示