自己写的计算器(加减乘除)代码

首先是Calculator计算器类

package test;

public class Calculator {
    public int addition(int number1, int number2) {
        return number1+number2;
    }

    public int subtraction(int number1, int number2) {
        return number1-number2;
    }

    public int multiplication(int number1, int number2) {
        return number1*number2;
    }

    public int divsition(int number1, int number2) {
        return number1/number2;
    }

}

接下来是Execute运行类

package test;

import java.util.Scanner;

public class Execute {
    public static void main(String[] args) {
        System.out.println("请输入算术表达式");
        Scanner in = new Scanner(System.in);
        String expression = in.nextLine();
        expression=expression+"+1";
        System.out.println("内部字符串改变为"+expression);
        //初始化开始
        //
        char[] Cexpression=expression.toCharArray();
        //创建运算器
        Calculator calculator=new Calculator();
        //数值列表
        int[] numbers=new int[10];
        int numbersindex=0;
        //转型列表
        char[] sub=new char[10];
        //数值下标位置
        int count=0;
        //符号列表
        char[] symbols = new char[10];
        int symbolsindex=0;
        //temp1是数值列表上一个数值,temp2是当前的数值
        int temp1=0,temp2=0;;
        //符号
        char symbol = 0;
        int flag=1;
        //初始化结束
        //第一次遍历
        for (int i = 0; i < expression.length(); i++) {
            if(Cexpression[i]>=‘0‘&&sub[i]<=‘9‘){
                    sub[count++]=Cexpression[i];
            }else{
                //字符串转型整型
                temp2=transition(sub);
                //当flag=2时进行运算
                if(flag==2){
                    flag=1;
                    //获取数值列表前一个数值;
                    temp1=numbers[numbersindex-1];
                    //判断symbol乘法还是除法,成功是乘法,失败为除法
                    if(decide(symbol)){

                        temp2=calculator.multiplication(temp2,temp1);
                    }else{
                        temp2=calculator.divsition(temp2,temp1);
                    }
                    //覆盖前一个数值
                    numbersindex--;
                }
                //temp2存入数值列表
                numbers[numbersindex++]=temp2;
                //获取符号
                symbol=Cexpression[i];
                //转型数值下标位置清零
                count=0;
                //判断是否大于flag,flag=2,不大于则加入到符号列表
                if(judge(symbol)>flag){
                    flag=2;
                }else{
                    //加入到符号列表
                    symbols[symbolsindex++]=symbol;
                }

            }
        }
        //输出数据结构
        System.out.println("输出数据结构");
        for(int i:numbers){
            System.out.print(i+" ");
        }
        System.out.println();
        for(char i:symbols){
            System.out.print(i);
        }
        System.out.println();

        int temp=numbers[0];
        count=0;
        for(int i=1;i<numbers.length;i++){
            if(symbols[count]==‘+‘){
                 temp+=numbers[i];
                 count++;
            }else if(symbols[count]==‘-‘){
                temp-=numbers[i];
                 count++;
            }
        }

        //输出最终结果
        System.out.println("结果为"+temp);

        //输出数据结构
        System.out.println("输出数据结构");
        for(int i:numbers){
            System.out.print(i+" ");
        }
        System.out.println();
        for(char i:symbols){
            System.out.print(i);
        }

    }

    private static int judge(char symbol) {
        if(symbol==‘+‘){
            return 1;
        }else if(symbol==‘-‘){
            return 1;
        }else if(symbol==‘*‘){
            return 2;
        }else if(symbol==‘/‘){
            return 2;
        }

        return 0;
    }

    private static boolean decide(char symbol) {
        if(symbol==‘*‘){
            return true;
        }else if(symbol==‘/‘){
            return false;
        }
        return false;
    }

    private static int transition(char[] sub) {
        int temp=0;
        for(int i=0;i<sub.length;i++){
            if(sub[i]>‘0‘&&sub[i]<‘9‘){
               temp=temp*10;
               temp+=(sub[i]-‘0‘);
            }
        }
        return temp;
    }
}

代码还是很简单的,主要有两个列表,一个列表存数值,一个列表存符号,如果符号是乘法或者除法,则把当前的数值和数值列表最后的数值相乘或相除,然后覆盖到数字列表的最后,如果不是,则存入数值列表的最后,符号列表添加当前的减法或者乘法

时间: 2024-11-05 02:37:52

自己写的计算器(加减乘除)代码的相关文章

利用面向对象写一个计算器

本文参考了程杰的<大话设计模式>,使用C#语言利用面向对象的模式来写一个计算器. 如果是我本人来写计算器,也就加减乘除的话,估计我会全部写进控制台里面,写4个if语句出来......或者我会利用switch,但是这样的效果都不好,有更好的方法,就是如下所示的代码啦: 先定义一个Operation类,主要实现运算框架: class Operation { public double Number1 { get; set;} public double Number2 { get; set; }

用VBA写一个计算器

着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分   开始====================================================== 之所以 要有今天这样一篇博客是因为. 之前领导让找几组数据.从excel表格里面. 要求是 主号码 一致,副号码 一致,名称为 XXX 的 项目发生变化的数据 需要被找到. 这样的 项目 有 11个. 我找的真的是眼要花. 变动前

初学者如何做一个简单的计算器,代码分享

先新建一个类 startCalculator 声明如下 #import <Foundation/Foundation.h> @interface StartCalculator : NSObject //声明两个要计算的变量 @property float opValue1; @property float opValue2; //声明一个运算符 @property char op; //普通方法 //- (float) gzyWorkAdd; // //- (float) gzyWorkSu

Javascript 实现简单计算器实例代码

Javascript 实现简单计算器实例代码 这篇文章主要介绍了Javascript 实现简单计算器实例代码的相关资料,需要的朋友可以参考下 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

Java基础-继承 利用接口做参数,写个计算器,能完成+-*/运算

38.利用接口做参数,写个计算器,能完成+-*/运算 (1)定义一个接口Compute含有一个方法int computer(int n,int m); (2)设计四个类分别实现此接口,完成+-*/运算 (3)设计一个类UseCompute,含有方法: public void useCom(Compute com, int one, int two) 此方法要求能够:1.用传递过来的对象调用computer方法完成运算 2.输出运算的结果 (4)设计一个测试类,调用UseCompute中的方法us

写一手简洁的代码

如果有人问我,为什么开始写代码...我会毫不犹豫的告诉他,因为IDEA的代码五颜六色的,很漂亮!!是的,我热爱写代码的初衷就是因为代码好"漂亮".从第一次开始写代码,到现在已经快2年了,"漂亮"这个词一直是我对代码热爱的初衷,只不过曾经的"漂亮"只局限于代码的颜色与字体,而现在的"漂亮"已经涵盖了颜色,接口,注释,方法,类等等,总之我喜欢写代码,只是因为它"漂亮". 之前在学校的时候,我就被实验室的同学&q

javascript写的新闻滚动代码

在企业站中,我们会看到很多新闻列表很平滑的滚动,但是这种功能自己写太浪费时间,下面是我整理好的一组很常用的新闻列表滚动,有上下分页哦! 1.body里面 1 <div class="tz_tagcgnewcontent"> 2 <div id="feature-slide-block"> 3 <div class="tz_newlist"> 4 <div class="tz_newimg&quo

写可测试的代码

任何一个软件都是可以测试.在某种意义上,用户的使用过程也就是一个软件测试的过程.可是这并不是我们今天要讲的可测试性.我们讲的可测试性指的是代码的可测试性,通俗点儿说就是是一串代码里包含的逻辑是不是可以被单元测试所覆盖.在这篇文章里我会从单元测试的基本概念开始引伸到如何写单元测试,如何写可单元测试的代码.文章里所有的例子都是C#写的,一来它是我职业生涯的主力语言.二来C#广为人知,相信对广大职业的或是业余的程序员来说读懂C#的代码不会是什么特别困难的事情.实际上我描述的方法和概念并不会局限于C#或

开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码

开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码. 开源地址: https://github.com/jkpang/PPRows