小程序 -- 计算器

这是一个小程序,对计算器的简单实现。不过只能计算个位数的加减乘除余。

主要是对枚举的值,以及堆栈还有队列的运用进行一次尝试。

enum Operation: Character {
    case plus         = "+"
    case minus        = "-"
    case times        = "*"
    case division     = "/"
    case surplus      = "%"
}

enum Number: Character {
    case zero  = "0"
    case one   = "1"
    case two   = "2"
    case three = "3"
    case four  = "4"
    case five  = "5"
    case six   = "6"
    case seven = "7"
    case eight = "8"
    case nine  = "9"
}

enum Input {
    case value(Number)
    case opration(Operation)
}

class Stack: StackProtocol {
    typealias Element = Input
    var datas: [Input] = []
}

class Calculator {

    var data = [Input]()

    func run() {
        var input: [Int8] = []
        gets(&input)
        inputData(input: String(cString: &input))

    }

    /// 把输入的数据解析成运算数据
    func inputData(input: String) {
        for c in input.characters {
            if let num = Number(rawValue: c) {
                data.append(Input.value(num))
            }

            if let ope = Operation(rawValue: c) {
                data.append(Input.opration(ope))
            }
        }
    }

    /// 把中缀表达式变成后缀表达式
    func changeData() {
        let s1 = Stack()
        let s2 = Stack()
        for d in data {
            switch d {
            case .value:
                s1.push(item: d)
            case .opration(let n):
                if let top = s2.top() {

                } else {
                    s2.push(item: d)
                }
                break
            }
        }
    }

    func ouputData() -> Int {

        return 0;
    }
}

let cal = Calculator()

cal.run()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以计算加减乘除的计算器小程序package zj lec1; import java awt BorderLayout; import java awt FlowLayout; import java awt GridLayout; import java awt event ActionEvent; import java awt event ActionListener; import java math BigInteger; import javax swing JButton; import javax swing JFrame; import javax swing JLabel; import javax swing JPanel; import javax swing JTextField; public class 简易计算机 extends JFrame implements ActionListener { JTextField a b c d; JButton ok exit; public 简易计算机 { this setLayout new FlowLayout ; this add a new JTextField 10 ; a setText "0" ; a setHorizontalAlignment JTextField RIGHT ; this add b new JTextField 1 ; this add c new JTextField 10 ; c setText "0" ; c setHorizontalAlignment JTextField RIGHT ; this add ok new JButton " " ; this add d new JTextField 10 ; this add exit new JButton "Exit" ; a addActionListener this ; b addActionListener this ; c addActionListener this ; exit addActionListener this ; ok addActionListener this ; this setSize 540 70 ; this setTitle "简易计算机" ; this setVisible true ; this setResizable false ; } public static void main String[] args { new 简易计算机 ; } @Override public void actionPerformed ActionEvent e { if e getSource ok || e getSource c || e getSource a { BigInteger ia new BigInteger a getText ; BigInteger ic new BigInteger c getText ; String ib b getText ; 判断是用加法 还是减法 还是乘法 除法 if ib contains "+" { BigInteger id ia add ic ; d setText id toString ; } else if ib contains " " { BigInteger id ia subtract ic ; d setText id toString ; } else if ib contains " " { BigInteger id ia multiply ic ; d setText id toString ; } else if ib contains " " { BigInteger id ia divide ic ; d setText id toString ; } } else if e getSource exit { System exit 0 ; } } }">可以计算加减乘除的计算器小程序package zj lec1; import java awt BorderLayout; import java awt FlowLayout; import java awt GridLayout; import java awt event ActionEvent; import java awt event ActionListener; import java math BigInteger; import javax swing JButton; import javax swing J [更多]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值