Java简单计算器(栈实现)

【数据结构】java栈实现简单计算器(中缀表达式) 使用栈完成计算一个表达式的结果:将中缀表达式转换成后缀表达式 1.通过索引遍历表达式 2.建立两个栈: 数栈和符号栈 3.扫描到数字直接入栈(运算数相对顺序不变) 4. 扫描到运算符: 符号栈为空,则压栈 符号栈不为空,扫描到的符号与符号栈栈顶元素进行比较,如果当前符号优先级大于栈中符号,则压栈 小于栈顶符号优先级,则从数栈中pop两个数,符号栈中pop一个符号进行计算,计算结果入数栈,扫描到当前符号继续比较,如果大于则入栈 ... 阅读详情

最近在复习数据结构,就用栈实现了一个简单计算器,增加了AWT的图形界面.

例:输入一个字符串:3*2+1-2

解题思路:
定义两个栈,一个用来存放数字,另一个用来存放操作符.
遍历字符串,如果是数字,就放入数字栈,
如果是操作符,则分两种情况:

  • 1.若字符栈为空,则直接入栈
  • 2.字符栈不为空,需要比较当前要入栈的字符和字符栈顶的字符的优先级
    • 如果前者优先级小于后者, 则需要进行计算(从数字栈取两个值,字符栈取一个值进行计算) ,计算完成之后将结果入数字栈, 再继续判断要入栈的字符和字符栈顶的字符的优先级.
    • 如果前者优先级大于后者, 当前字符入字符栈, 记录一个标志位, 下一个数字入栈之后进行计算.(从数字栈取两个值,字符栈取一个值进行计算).

如何判断计算完:

  • 字符栈为空

最后全部计算完之后,将结果入数字栈,返回该结果即可.

附上代码:

import java.awt.*;
import java.awt.event.*;
import java.util.Stack;

public class Calculator {
    public static void main(String[] args) {

        new MyFrame();
    }
}

class MyFrame extends Frame {
    Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,add,min,mul,div,equal,clear,delete;
    TextField tx;

    public MyFrame() {
        /**
         * 1.添加按钮 文本框
         * 2.添加事件监听
         */

        //添加组件 10个数字  5个运算符   一个文本框  一个清零按钮 一个删除按钮
        btn0 = new Button("0");
        btn1 = new Button("1");
        btn2 = new Button("2");
        btn3 = new Button("3");
        btn4 = new Button("4");
        btn5 = new Button("5");
        btn6 = new Button("6");
        btn7 = new Button("7");
        btn8 = new Button("8");
        btn9 = new Button("9");
        add = new Button("+");
        min = new Button("-");
        mul = new Button("*");
        div = new Button("/");
        equal = new Button("=");
        clear = new Button("clear");
        delete = new Button("<-");
        tx = new TextField("");

        //添加一个面板
        Panel panel = new Panel();
        //设置面板布局
        panel.setLayout(new GridLayout(5,3));
        panel.add(btn1);
        panel.add(btn2);
        panel.add(btn3);
        panel.add(btn4);
        panel.add(btn5);
        panel.add(btn6);
        panel.add(btn7);
        panel.add(btn8);
        panel.add(btn9);
        panel.add(add);
        panel.add(btn0);
        panel.add(min);
        panel.add(mul);
        panel.add(div);
        panel.add(delete);
        //将面板添加到Frame中心
        add(panel,BorderLayout.CENTER);
        //将文本框添加到Frame
        add(tx,BorderLayout.NORTH);
        add(panel);
        add(clear,BorderLayout.WEST);
        add(equal,BorderLayout.EAST);


        //添加事件监听
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        MyActionListen myActionListen = new MyActionListen();
        add.addActionListener(myActionListen);
        min.addActionListener(myActionListen);
        mul.addActionListener(myActionListen);
        div.addActionListener(myActionListen);
        clear.addActionListener(myActionListen);
        delete.addActionListener(myActionListen);
        equal.addActionListener(myActionListen);
        btn0.addActionListener(myActionListen);
        btn1.addActionListener(myActionListen);
        btn2.addActionListener(myActionListen);
        btn3.addActionListener(myActionListen);
        btn4.addActionListener(myActionListen);
        btn5.addActionListener(myActionListen);
        btn6.addActionListener(myActionListen);
        btn7.addActionListener(myActionListen);
        btn8.addActionListener(myActionListen);
        btn9.addActionListener(myActionListen);


        setVisible(true);
        setBounds(100,100,200,300);
        setResizable(false);
    }


    //事件监听
    private class MyActionListen implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            String text = tx.getText();
            if (e.getSource() == btn0) {
                text += btn0.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn1) {
                text += btn1.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn2) {
                text += btn2.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn3) {
                text += btn3.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn4) {
                text += btn4.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn5) {
                text += btn5.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn6) {
                text += btn6.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn7) {
                text += btn7.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn8) {
                text += btn8.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == btn9) {
                text += btn9.getLabel();
                tx.setText(text);
            }

            if (e.getSource() == add) {
                text += add.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == min) {
                text += min.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == mul) {
                text += mul.getLabel();
                tx.setText(text);
            }
            if (e.getSource() == div) {
                text += div.getLabel();
                tx.setText(text);
            }
            //计算表达式的结果
            if (e.getSource() == equal) {
                if(tx.getText()!=null) {
                    text += equal.getLabel();
                    tx.setText(text);
                    double calculate = calculate(tx);
                    text += calculate;
                    tx.setText(text);
                }

            }
            //清零按钮
            if (e.getSource() == clear) {
                tx.setText("");
            }
            //删除按钮
            if (e.getSource() == delete) {
                String s = tx.getText();
                if (s.length() > 0) {
                    tx.setText(s.substring(0, s.length() - 1));
                }
            }
        }

        /**
         * 计算的核心代码
         * @param tx
         * @return
         */
        private double calculate(TextField tx) {
            //定义两个栈 用来计算数据
            Stack<Double> numStack = new Stack<>();
            Stack<Character> charStack = new Stack<>();
            //进行计算的标志
            boolean flag = false;

            //获取文本框的内容
            String str = tx.getText();
            int begin = 0;
            int end = 0;
            //遍历s
            for (int i = 0; i < str.length(); i++) {
                char ch = str.charAt(i);

                if (!Character.isDigit(ch)) {
                    //如果不是数字 ,首先判断字符栈是否为空 将end置为当前位置
                    end = i;
                    //将begin 和 end之间的的数字入数字栈
                    numStack.push(Double.parseDouble(str.substring(begin,end)));
                    begin = end+1;

                    if (flag == true) {
                        double second = numStack.pop();
                        double first = numStack.pop();
                        char opt = charStack.pop();
                        double result = operation(first, second, opt);
                        //将计算出的结果进行入栈
                        numStack.push(result);
                    }

                    if (!charStack.empty()) {
                        //非空 判断优先级
                        if (level(ch, charStack.get(charStack.size() - 1))) {
                            //优先级高 将flag设置为true 下一步放入数字的时候进行运算
                            flag = true;
                        }
                    }
                    //进行入栈
                    if(str.charAt(i) != '=') {
                        charStack.push(ch);
                    }
                }

            }


            //全部入栈完成 进行计算
            while (!numStack.empty() && !charStack.empty()) {
                //从底往上计算
                double first = numStack.remove(0);
                double second = numStack.remove(0);
                char opt = charStack.remove(0);
                double result = operation(first, second, opt);
                //运算完进行入栈
                numStack.add(0,result);
            }
            return numStack.pop();
        }


        /**
         * 进行计算
         * @param first
         * @param second
         * @param opt
         * @return
         */
        private double operation(double first, double second, char opt) {
            switch (opt) {
                case '+':
                    return first + second;
                case '-':
                    return first - second;
                case '*':
                    return first * second;
                case '/':
                    return first / second;
            }
            return -1;
        }

        /**
         * 判断ch 和 topCh的优先级
         * @param ch
         * @param topCh
         * @return
         */
        private boolean level(char ch, Character topCh) {
            switch (ch) {
                case '+':
                    return false;
                case '-':
                    return false;
                case '*':
                    if(topCh == '+' || topCh == '-') {
                        return true;
                    }
                case '/':
                    if(topCh == '+' || topCh == '-') {
                        return true;
                    }
            }
            return false;
        }
    }
}

运行结果 :

在这里插入图片描述

java使用stack栈实现简单四则计算器 使用栈思想实现计算器 阅读详情

相关推荐

Java用栈实现的计算器

Java用栈实现的计算器,界面用swing实现,不支持括号

Java数据结构-栈(实现计算器)

数据结构-栈(实现计算器)

vintind的博客 710

JAVA 版计算器,通过栈实现

小程序,听说能换积分,发个把,能用,application 进入dos运行就可以

数据结构与算法——Java实现栈、逆波兰计算器(整数加减乘除)

我们平时使用的计算器,其底层就是利用了栈这个概念对这个算式进行理解栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表(stack)是限制表素的插入和除只能在性的同一端进行的一种性表。允许插入和删除的端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除图解方式说明。

weixin_51351637的博客 1959

Java利用堆栈实现简单四则运算

NULL 博文链接:https://chinamobile.iteye.com/blog/1630919

MTK平台高效部署Qwen2.5大模型:从转换到推理全流程解析

本文详细解析了在联发科(MTK)NeuroPilot平台上高效部署Qwen2.5大模型的全流程。内容涵盖从环境搭建、模型转换、量化优化到编译部署与上机推理的完整步骤,重点分享了模型转换与模型运行的关键实践与避坑指南,旨在帮助开发者将大语言模型成功集成至移动及边缘设备。

zeta9的博客 378

Java栈实现综合计算器

在韩顺平老师的数据结构课程P35中代码实测出现了问题,无法处理如7-3*5+2此类高级运算符前面跟着个-的情况,按照老师的代码3*5=15之后会继续和+2进行运算最后结果为7-17=-10,而正确结果为-6,在此我尝试解决这个问题。其实一开始我还在想是否应该用递归来解决这个问题,当栈中有多层数据的时候使用递归解决,但是觉得并不需要这么麻烦,因为符号位最多只能堆积两层。只需要在7-3*5+2的乘法判断完之后,紧接上-和+的判断,便可以解决问题。

Byrd_的博客 347

使用TinyProxy搭建代理服务器

背景 办公电脑所在网络无法连接外网,机房服务器可以连接外网,通过服务器代理上网; 一、CentOS下TinyProxy安装–搭建代理服务器 TinyProxy是个轻量级简单的HTTP/HTTPS代理程序,GitHub和官网,安装方式这里主要介绍两种 CentOS下yum安装,参考:TinyProxy安装 Docker安装 先安装docker环境yum install docker -y 二、Win10下使用 ...

椰汁菠萝 1万+

栈实现简单计算器【java】

仅简单实现+,-,*,/

记录学习,共同进步 474

深入C6678启动流程:从BootRom参数表到多核镜像部署的完整解析

本文深入解析TMS320C6678 DSP的启动流程,从BootRom参数表到多核镜像部署的全过程。详细介绍了七种启动模式的工程选择、多核镜像构建技巧以及二级引导策略,帮助开发者掌握C6678的启动机制与调试方法,提升嵌入式系统开发效率。

weixin_30505225的博客 612

CFturbo 2024保姆级教程:从流量扬程到三维叶轮,手把手搞定离心泵水力设计

本文提供CFturbo 2024离心泵水力设计的全流程实战指南,从流量扬程参数输入到三维叶轮模型导出,详细解析设计步骤与优化技巧。涵盖叶轮尺寸确定、子午面型线设计、叶片角度调整等关键环节,帮助工程师高效完成CAE辅助的离心泵水力设计,提升设计质量与效率。

weixin_42569329的博客 936

java中栈结构的详解以及实现简单计算器

java中栈结构的详解以及实现简单计算器

wang20010104的博客 862

(八)基于MuJoCo的LeRobot SO100仿真操控实战指南(操作优化)

本文详细介绍了如何在MuJoCo仿真环境中搭建并优化LeRobot SO100机械臂的操控。通过两种核心模式(纯键盘仿真与实机镜像同步)的实战演示,重点讲解了关键的参数标定方法,以实现虚拟模型与真实硬件的精准同步。文章还提供了性能优化技巧,旨在帮助开发者构建高效、安全的机器人算法开发与测试流程。

weixin_29083649的博客 320

java栈实现简单的计算器

一、代码 直接上代码,分为两个类calc.StackCalculator.java,calc.Calculator.java 1、StackCalculator.java /** * 用栈实现表达式的运算v1.0 * 支持运算:+、-、*、/、%、^、!、() * 输入的表达式需以&quot;#&quot;结束 */ package calc; import java.util.Stack; pub...

逝水流云的博客 3024

Visual Studio报错TRK0005找不到CL.exe?三步彻底解决环境变量问题

本文详细解析了Visual Studio报错TRK0005找不到CL.exe的根本原因,并提供了三步彻底解决环境变量问题的方案。从验证安装完整性到配置永久环境变量,再到注册表级修复,帮助开发者建立健壮的开发环境配置体系,确保编译链稳定运行。

weixin_30839881的博客 459

Python爬虫教程:抓取短视频平台数据(以抖音和快手为例)

为什么抓取短视频平台数据?内容分析:通过抓取短视频平台上的视频内容、标题、标签等数据,可以进行内容分类、趋势分析、话题分析等。情感分析:抓取视频的评论数据,并进行情感分析,帮助企业或组织了解公众的情绪反馈。用户行为分析市场监测:通过抓取特定关键词或标签下的视频数据,分析市场趋势,进行竞争对手分析。短视频平台数据类型:视频信息:包括视频标题、描述、标签、作者等。用户信息:包括用户的昵称、粉丝数、关注数等。互动数据评论数据:视频下的用户评论内容及用户信息。

2201_76125261的博客 3663

利用栈实现简单计算器(java)

利用栈实现简单计算器(java) package Stack; class Stack { private int maxSize; private int top = -1; private int[] stack; public Stack(int maxSize) { this.maxSize = maxSize; stac...

found 404-xq 的博客 337

(11)(2.2.2) BLHeli32,AM32, and BLHeli_S ESCs(一)

Ardupilot官网关于《Peripheral Hardware》的翻译 —《(2.2.2) BLHeli32,AM32, and BLHeli_S ESCs》。

无人机开发(开源Ardupilot) 2234

java 栈的应用 - 实现简单的加减乘除的计算器

对于一个简单的加减乘除表达式,怎么去计算其结果呢? 比如 21 + 3 - 5 * 0。|不包含 (,)| 这里使用的实现思路是: 准备两个栈,分别用于存放 数字和 操作符。(为了便于后续表达,分别命名为numStack, opStack); 然后就是遍历这个字符串,从前往后的提取里面的数字和符号,进行下一步的操作: 如果提取到的是数字,直接存入numStack; 如果提取到的是符号,就先判断符号栈是否为空: 如果是空的,直接存入到opStack; 如果符号栈不是空,就比较符号栈的栈顶元素与当前符号的

Cat的专栏 1421

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java栈实现简单的计算器

/** * java栈实现简单的计算器 * 计算表达式的值 * 实现+、-、/、*、%、(、) * #表示表达式的开始与结束 */ import java.util.Stack; import java.util.Vector; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Calculator { private Stack<String> operation = new..

逝水流云的博客 316

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java利用栈实现简单计算器功能

利用栈,实现简单计算器功能 计算的数中 不能带括号.每行代码的功能,里面都备注的很清楚了 import java.util.Stack; public class Calculator { public static void main(String[] args) { String s = "143+42+12*70-21+50"; Stack<Character> operStack = new Stack<>(); S

田埂、の技术博客 345

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java简单实现计算器——用数组实现栈

Java简单实现计算器——用数组实现栈 参考尚硅谷 数据结构视频 package DataStructures.stack; import java.util.Scanner; class ArrayStack2 { private int maxSize;//栈的容量 private int[] stack; private int top=-1; public ArrayStack2(int maxSize)//初始化栈的大小 { this.m

LHH的博客 215

用Java实现的一个简单计算器,使用栈实现运算操作

java实现的一个简易计算器 计算器界面如下:(试用按例在图片上有所显示) 具体代码如下(如果看不懂可以私信我,记得点赞哦): PS:我还是个小菜鸟,写的不好处希望大家多多体谅 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.EmptyStackException; import ...

lxj2116的博客 321

JAVA栈实现简单的计算器

本次使用栈来模拟计算器的实现 例如 15 + 2 × 3 - 3 我们需要两个栈来辅助实现 符号栈(用来存储符号) 数字栈(用来存储运算的数字和结果) 实现思路: 5+2*3-3 1.通过一个index值(索引),来遍历我们的表达式 2.如果我们发现是一个数字。就直接入数栈 3.如果发现扫描到的是一个符号,就分如下情况 3.1 如果发现当前的符号栈为空,就直接入符号栈。 3.2 如果符号栈有操作符,就进行比较。 1)如果当前的操作符的优先级小于或者等于栈中的操作符,这时就需要从数栈中pop出两个数

CONSOLE___的博客 959

java用栈如何实现计算器_利用栈实现简单计算器(java)

利用栈实现简单计算器(java)package Stack;class Stack {private int maxSize;private int top = -1;private int[] stack;public Stack(int maxSize) {this.maxSize = maxSize;stack = new int[maxSize];}public boolean isFul...

weixin_39908462的博客 233

栈java实现(二)简单中缀计算器实现

一、思路分析   这里我们使用自定义的栈结构完成一个小练习:简单的不带括号的中缀表达式计算器的实现。分析思路如下: 首先创建一个类来自定义栈结构以及所需要用到的一些基本方法。 实例化两个栈来分别存放数字和符号。 建立一个索引index来对中缀表达式进行遍历。 开始扫描遍历表达式: 如果是数,我们就查看表达式下一位 ,如果下一位也是数,就进行拼接操作,直到下一位不是数,然后将得到的数直接入栈。 ...

猪奥奥的Blog 374
上一篇: 集合-LinkedList源码分析
下一篇: HashMap1.8源码分析
Java-fly
博客等级 码龄9年 13粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值