Java基础--》做个简易的计算器

news2024/12/23 22:13:06

使用多态实现计算器的加减乘除,根据运算符不同实例化不同子类进行计算(运算符可键盘接收输入)

  • 例如:加法有num1、num2属性,方法:计算求和
  • 减法有num1、num2属性,方法:计算求差
  • 乘法有num1、num2属性,方法:计算求乘
  • 除法有num1、num2属性,方法:计算求除

 先看效果图:

 代码如下:

package com_03.jin;

import java.util.Scanner;

/**
 * 使用多态实现计算器的加减乘除,根据运算符不同实例化不同子类进行计算(运算符可键盘接收输入)
 * 例如:加法有num1、num2属性,方法:计算求和
 * 减法有num1、num2属性,方法:计算求差
 * 乘法有num1、num2属性,方法:计算求乘
 * 除法有num1、num2属性,方法:计算求除
 */
public class Demo5 {
    public static void main(String[] args) {
        Calculate calculate = null;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int a = scanner.nextInt();

        System.out.println("请输入操作符:");
        String operator = scanner.next();
        System.out.println("请输入第二个数:");
        int b = scanner.nextInt();

        System.out.println("需要计算结果请输入(等号):=");
        String equal = scanner.next();


        switch (operator) {
            case "+":
                calculate = new Add(a, b);

                break;
            case "-":
                calculate = new Subtraction(a, b);
                break;
            case "*":
                calculate = new Take(a, b);

                break;
            case "/":
                calculate = new Remove(a, b);
                break;
        }
        if (equal.equals("=")) {

            double res = calculate.operation();
            System.out.println(res);
        } else {
            System.out.println("请正确按提示进行操作哦!");
        }
    }
}

abstract class Calculate {
    public int num1;
    public int num2;

    public Calculate(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }

    /**
     * 操作两个数
     * 可以声明一个抽象方法
     *
     * @return
     */
    public abstract double operation();
}

//加法
class Add extends Calculate {

    public Add(int num1, int num2) {
        super(num1, num2);
    }

    @Override
    public double operation() {
        return this.num1 + this.num2;
    }
}

class Subtraction extends Calculate {

    /**
     * 有参构造方法
     */
    public Subtraction(int num1, int num2) {
        super(num1, num2);
    }

    @Override
    public double operation() {
        return this.num1 - this.num2;
    }
}

class Take extends Calculate {

    /**
     * 有参构造方法
     *
     * @param num1
     * @param num2
     */
    public Take(int num1, int num2) {
        super(num1, num2);
    }

    @Override
    public double operation() {
        return this.num1 * this.num2;
    }
}

class Remove extends Calculate {

    /**
     * 有参构造方法
     *
     * @param num1
     * @param num2
     */
    public Remove(int num1, int num2) {
        super(num1, num2);
    }

    @Override
    public double operation() {

        return this.num1 / this.num2;

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1113649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java异常】什么是异常,Java中如何处理异常?

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Java异常处理 1. 了解异常:2. 异常…

人大金仓与哪吒科技达成战略合作,加快推动智慧港口建设

近日,人大金仓与哪吒港航智慧科技(上海)有限公司(以下简称“哪吒科技”)达成战略合作。双方旨在共享优势资源,联合为港口企业转型升级提供完备的技术支撑与行业解决方案。人大金仓总裁杜胜、哪吒科技总经理…

财务系统的报账页面设计

报账,指各部门向财务部报送账单,财务审批后予以结算。 报账的做法,小公司可能会少一些,大公司会多一些。小公司人员少,沟通快捷,运转效率高,老板予以口头肯定后财务直接付款了。大公司的部门很多…

wpf主页面解析

1、 开头的网址作用 1和2都是引入命名空间的,每一个字符串代表一系列的命名空间,这样就可以不用一个一个引用了。wpf中规定有一个名称空间是可以不加名字的,xmlns不加名字是默认命名空间。 "http://schemas.microsoft.com/winfx/2006/x…

如何利用开源考试系统进行在线远程考试?

在当前全球疫情的影响下,远程教育和在线考试的需求日益增长。开源考试系统成为一种受欢迎的选择,它为教师和学生提供了便利的远程考试解决方案。 选择适合自己需求的开源考试系统是至关重要的。多种开源考试系统在市场上可供选择。教师应根据自己的教学…

海外版知乎Quora,如何使用Quora进行营销?

想必大家对知乎非常熟悉,而Quora作为海外最受欢迎的网站之一,是与知乎功能与性质非常相似的一个平台,靠回答别人的问题获得关注,是引流最快的一个平台。对于做跨境电商、独立站的商家来说,这是一个绝佳的免费引流广告工…

ABAP程序不报错缺出错---解决

ALV字段名不显示 自建的透明表 REPORT ZTXYY_1123. DATA: gr_alv TYPE REF TO cl_salv_table,gr_columns TYPE REF TO cl_salv_columns_table. DATA: ZPL_LIST TYPE TABLE OF ZPL_EINVOICE_LOG. CALL METHOD cl_salv_table>factory IMPORTINGr_salv_table gr_alv CHAN…

点云处理【四】(点云关键点检测)

第一章 点云数据采集 第二章 点云滤波 第二章 点云降采样 1.点云关键点是什么? 关键点也称为兴趣点,它是2D图像、3D点云或曲面模型上,可以通过定义检测标准来获取的具有稳定性、区别性的点集。 我们获得的数据量大,特别是几十万…

C++模拟实现——list

一、成员变量及其基本结构 1.基本结构模型 本质是一个带头双向循环列表&#xff0c;将节点进行封装&#xff0c;并且为了方便使用&#xff0c;进行重定义 2.节点的封装定义 template<class T>//定义节点struct list_node{list_node<T>* _prev;list_node<T>…

linux性能分析(三)CPU篇(一)基础

一 CPU篇 遗留&#xff1a; 负载与cpu关系、负载与线程的关系? ① CPU 相关概念 1、physical 物理CPU个数 --> 一般一个实体 2、cpu 核数 3、逻辑CPU个数 逻辑核 4、超线程 super thread 技术 5、各种cpu的计算方式物理 physical CPU的个数&#xff1a; physical id逻…

易点易动固定资产管理系统引入RFID手持终端助力固定资产盘点

在现代商业环境中&#xff0c;固定资产盘点和管理对企业的运营至关重要。然而&#xff0c;传统的手工盘点方法已经无法满足企业对效率和准确性的要求。为了解决这一问题&#xff0c;易点易动固定资产管理系统引入RFID&#xff08;射频识别&#xff09;手持终端&#xff0c;为固…

北京卫视《为你喝彩》——星辰天合 CEO 胥昕,他专攻 SDS 让“数据常青”

10 月 18 日晚&#xff0c;北京卫视《为你喝彩》栏目播出&#xff0c;主题为《你有没有为梦想拼过命&#xff1f;听创业者说》&#xff0c;星辰天合 CEO 胥昕作为主人公之一&#xff0c;讲述了自己的创业故事。 如下内容摘自北京卫视&#xff1a; 青春总有着万般姿态&#xf…

图数据库实践 - 如何将图数据库应用于对公信贷

导读 日前&#xff0c;在经济形势和政策环境下&#xff0c;银行信贷结构进一步调整&#xff0c;民营企业、小微企业、绿色信贷投放力度持续加大。而坚持金融服务实体经济是政府的一贯主张&#xff0c;据相关工作报告指出&#xff0c;要求用好普惠小微贷款支持工具&#xff0c;…

为什么需要协调能力?如何提高协调能力?

协调能力指的是协作与调和&#xff0c;属于综合性能力的体现&#xff0c;涉及到表达&#xff0c;沟通&#xff0c;逻辑等方面&#xff0c;在日常生活中缺乏协调能力&#xff0c;也许影响并不太大&#xff0c;但是如果在职业发展中&#xff0c;协调能力就尤为重要&#xff0c;尤…

【公益案例展】广碳所——恒生电子基于区块链技术打造区域性碳中和登记系统...

‍ 恒生电子公益案例 本项目案例由恒生电子投递并参与数据猿与上海大数据联盟联合推出的 #榜样的力量# 《2023中国数据智能产业最具社会责任感企业》榜单/奖项”评选。 ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 全球气候变暖、温室效应明显、二氧化碳排放增多&#…

virtualBox虚拟机安装多个+主机访问虚拟机+虚拟机访问外网配置

目的&#xff1a;本机安装3个虚拟机 一、虚拟机安装&#xff1a;Oracle VM VirtualBox (https://www.virtualbox.org/)源代码可下载&#xff0c;且免费使用 1、https://www.virtualbox.org/ 进入网站中Download 模块选择与自己电脑系统相应的下载包下载即可 如果安装过程报错如…

京东数据分析:2023厨房小电市场遇冷,空气炸锅等明星产品被抛弃

过去几年间&#xff0c;宅经济的爆发带火了酸奶机、煮蛋器、豆浆机、空气炸锅、养生壶等&#xff0c;一众外观小巧、功能丰富、价格相对便宜的厨房小家电。但随着年轻人走出家门回归工作岗位&#xff0c;厨房小家电们却步入了艰难时刻。 如今&#xff0c;厨房小家电们似乎正在经…

论坛介绍 | COSCon'23 人工智能(A)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

NET7下用WebSocket做简易聊天室

NET7下用WebSocket做简易聊天室 步骤&#xff1a; 建立NET7的MVC视图模型控制器项目创建websocket之间通信的JSON字符串对应的实体类一个房间用同一个Websocketwebsocket集合类&#xff0c;N个房间创建websocket中间件代码Program.cs中的核心代码&#xff0c;使用Websocket聊…

C语言利用已知公式估算e的近似值

编写一个函数&#xff0c;由公式e11/1&#xff01;1/2! 1/3!…&#xff0c;计算不同精确度下e的近似值。要求能够用键盘揄入指定的精确度&#xff0c;并输出该精确度下的e的近似值 例如&#xff1a;输入精确度为10e-6&#xff0c;则输出结果&#xff1a;2.718279。 #include &…