java、C语言、JavaScript写四则运算,模拟简单的计算器

简单的计算器的实现

java的swing

package Test0602;

/**
 * @Auther: Xinbai
 * @Date:2020/6/2 19:08
 */
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Calculator extends JFrame {

    public Calculator(){

        setLayout(new FlowLayout(FlowLayout.LEFT,10,20)); //建立流式布局
        add(new JLabel("Number 1"));
        JTextField tf1 = new JTextField(3); //文本框JTextFiled
        add(tf1);

        add(new JLabel("Number 2"));
        JTextField tf2 = new JTextField(3); //文本框JTextFiled
        add(tf2);

        add(new JLabel("result"));
        JTextField tf3 = new JTextField(5); //文本框JTextFiled
        add(tf3);

        JButton btnAdd = new JButton("Add"); //Add按钮引用对象名为btnAdd
        add( btnAdd);

        btnAdd.addActionListener(new ActionListener() { //加一个监听器

            public void actionPerformed(ActionEvent e) { //实现功能的方法

                double result = Double.parseDouble(tf1.getText()) + Double.parseDouble(tf2.getText());
                tf3.setText(result+"");  //将result的结果转换为string形式显示在tf3对应的文本框中
            }
        });

        JButton btnSubtract = new JButton("Subtract");
        add(btnSubtract);

        btnSubtract.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {

                double result = Double.parseDouble(tf1.getText()) - Double.parseDouble(tf2.getText());

                tf3.setText(result+"");
            }
        });

        JButton btnMultiply = new JButton("Multiply");
        add(btnMultiply);

        btnMultiply.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {

                double result = Double.parseDouble(tf1.getText()) * Double.parseDouble(tf2.getText());

                tf3.setText(result+"");
            }
        });

        JButton btnDivide = new JButton("Divide");
        add(btnDivide);

        btnDivide.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {

                double result = Double.parseDouble(tf1.getText()) / Double.parseDouble(tf2.getText());

                tf3.setText(result+"");
            }
        });
    }


    public static void main(String[] args) {

        Calculator frame = new Calculator();

        frame.setTitle("计算器"); //设置标题

        frame.setSize(400,200); //设置框的初始大小

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /*设置关闭按钮*/

        frame.setVisible(true); //显示界面
    }
}

在这里插入图片描述

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Stack;
/**
 * @Auther: Xinbai
 * @Date:2020/6/2 18:39
 */

    class MyException extends Exception{
        public MyException() {
            super();
        }
        public MyException(String message) {
            super(message);
        }
    }


public class Caculate extends JFrame {
        /*
         *
         */

        private JTextField textField;               //输入文本框
        private String input;                       //结果
        private String operator;                    //操作符

        public Caculate() {
            input = "";
            operator = "";

            JPanel panel = new JPanel();
            textField = new JTextField(30);
            textField.setEditable(false);                       //文本框禁止编辑
            textField.setHorizontalAlignment(JTextField.LEFT);
            //textField.setBounds(100, 100, 20, 20);            //在容器布局为空情况下生效
            textField.setPreferredSize(new Dimension(200,30));//设置该组件的初始大小

            //将textField加入本JFrame中,布局为边界布局,位置为north
            this.add(textField, BorderLayout.NORTH);

            String[] name= {"7","8","9","+","4","5","6","-","1","2","3","*","0","C","=","/"};

            //将这个panel的布局设置为网格布局,有四行四列,行间距和列间距为1
            panel.setLayout(new GridLayout(4,4,1,1));

            for(int i=0;i<name.length;i++) {

                JButton button = new JButton(name[i]);

                //设置按钮的时间监听
                button.addActionListener(new MyActionListener());
                //将按钮加入到panel中
                panel.add(button);
            }
            //将panel加入到本JFrame中,布局为边界布局,位置为centre
            this.add(panel,BorderLayout.CENTER);
        }

        class MyActionListener implements ActionListener{           //内部类实现按钮响应

            @Override
            public void actionPerformed(ActionEvent e) {
                int cnt=0;
                String actionCommand = e.getActionCommand();            //获取按钮上的字符串
                if(actionCommand.equals("+") || actionCommand.equals("-") || actionCommand.equals("*")
                        || actionCommand.equals("/")) {
                    input += " " + actionCommand + " ";
                }
                else if(actionCommand.equals("C")) {                    //清除输入
                    input = "";
                }
                else if(actionCommand.equals("=")) {                    //按下等号
                    try {
                        input+= "="+calculate(input);
                    } catch (MyException e1) {
                        if(e1.getMessage().equals("被除数不能为0"))
                            input = e1.getMessage();
                        else
                            input = e1.getMessage();
                    }
                    textField.setText(input);
                    input="";
                    cnt = 1;
                }
                else
                    input += actionCommand;                         //按下数字

                //因为如果不按“=”按钮cnt一直未0,所以可以保证显示输入的数字和操作键
                if(cnt == 0)
                    textField.setText(input);
            }
        }

        private String calculate(String input) throws MyException{              //计算函数
            String[] comput = input.split(" ");
            //System.out.println(input);
            Stack<Double> stack = new Stack<>();
            Double m = Double.parseDouble(comput[0]);
            stack.push(m);                                      //第一个操作数入栈

            for(int i = 1; i < comput.length; i++) {
                if(i%2==1) {
                    if(comput[i].equals("+"))
                        stack.push(Double.parseDouble(comput[i+1]));
                    if(comput[i].equals("-"))
                        stack.push(-Double.parseDouble(comput[i+1]));
                    if(comput[i].equals("*")) {                 //将前一个数出栈做乘法再入栈
                        Double d = stack.peek();                //取栈顶元素
                        stack.pop();
                        stack.push(d*Double.parseDouble(comput[i+1]));
                    }
                    if(comput[i].equals("/")) {                 //将前一个数出栈做乘法再入栈
                        double help = Double.parseDouble(comput[i+1]);
                        if(help == 0)
                            throw new MyException("被除数不能为0");           //不会继续执行该函数
                        double d = stack.peek();
                        stack.pop();
                        stack.push(d/help);
                    }
                }
            }

            double d = 0d;

            while(!stack.isEmpty()) {           //求和
                d += stack.peek();
                stack.pop();
            }

            String result = String.valueOf(d);
            return result;
        }

        public static void main(String[] args) {
            JFrame f = new Caculate();
            f.setTitle("计算器"); //设置标题
//            f.setTitle(f.getClass().getSimpleName());
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setBounds(400, 200, 500, 300);
            f.setVisible(true);
        }
    }

在这里插入图片描述

java


import java.util.Scanner;

/**
 * @Auther: Xinbai
 * @Date:2020/6/2 19:24
 */
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入第一个数:");
            int num1 = sc.nextInt();
            System.out.println("输入操作符[输入1表示+,2表示-,3表示*,4表示/]:");
            int s = sc.nextInt();
            System.out.println("请输入第二个数:");
            int num2 = sc.nextInt();
            if (s == 1) {
                System.out.println(num1 + num2);
            } else if (s == 2) {
                System.out.println(num1 - num2);
            } else if (s == 3) {
                System.out.println(num1 * num2);
            } else if (s == 4) {
                if (num2 == 0) {
                    System.out.println("除数不能为0");
                } else
                    System.out.println(num1 / num2);
            } else
                System.out.println("输入有误");
        }
    }
}

C语言

#include <stdio.h>
int main()
{
int a,b,result;
char m; 
while(true){
printf("请输入计算式[加减乘除]:\n");
scanf("%d%c%d",&a,&m,&b);
if(m=='+')          //判断是否进行加法运算,以下同理
result=a+b;
else if(m=='-')     
result=a-b;
else if(m=='*')
result=a*b;
else if(m=='/'){ 
if(b==0){
	printf("除数不能为0,请重新输入!"); //如果除数为0,提示报错 
} 
result=a/b;
printf("余数为:%d\n",a%b);
} 
else 
printf("您输入有误\n");   //如果输入的符号非+-*或非/,报错
printf("计算结果为:%d\n",result);    //最后输出结果
}
}

在这里插入图片描述

JavaScript

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>四则运算</title>
	</head>
	<body>
		<p>请输入两个数进行简单的运算:</p>
		<input type="text" id="num1" />
		<select id="selete">
			<option value="+">+</option>
			<option value="-">-</option>
			<option value="*">*</option>
			<option value="/">/</option>
		</select>
		<input type="text" id="num2" />
		<input type="button" value="=" onclick="test()" />
		<input type="text" id="result" />
		<script type="text/javascript">
			function test() {
				var n1 = parseFloat(document.getElementById("num1").value);
				var n2 = parseFloat(document.getElementById("num2").value);
		
				var s1 = document.getElementById("selete").value;
				switch (s1) {
					case '+':
					 answer= n1 + n2;
						break;
					case '-':
					answer= n1 - n2;
						break;
					case '*':
					answer= n1 * n2;
						break;
					case '/':
					answer= n1 / n2;
						break;
				}
				document.getElementById("result").value=answer;
			}
		</script>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java计算器,能实现加减乘除。 //***该梦幻计算器与Windows附件自带计算器的标准版功能、界面相仿***// //******但还不支持键盘操作,如有需要,下一次等级将满足你**********// import java.awt.*; import java.lang.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.awt.Component.*; import java.awt.color.*; import java.text.DecimalFormat; //*****************************************************************************// //*****************************************************************************// public class Calculator implements ActionListener //导入动作监听接口 { //******************************// //*****设计计算器界面的单位*****// JFrame frame; //定义框架 JTextField textAnswer; //定义输出显示框 JPanel panel, panel1, panel2, panel3;//定义面板作为子容器,从而达到要求的界面效果 JMenuBar mainMenu; JTextField textMemory; JLabel labelMemSpace; //labelMemSpace单纯做摆设,控制面板的形状 JButton buttonBk, buttonCe, buttonC; JButton button[]; JButton buttonMC, buttonMR, buttonMS, buttonMAdd; JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul,buttonDiv, buttonMod; JButton buttonSqrt, buttonDao, buttonEqual; JMenu editMenu, viewMenu, helpMenu; JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal,myCollege; DecimalFormat df; //设置数据输出精度 boolean clickable; //控制当前能否按键 double memoryd; //使用内存中存储的数字 int memoryi; double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd) short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算 boolean clear = false; String copy; //做复制用 JTextArea help; //帮助 JScrollPane scrollHelp; static boolean One =true; //******************// //*****构造函数开始*****// public Calculator() { clickable = true; answerd = 0; frame = new JFrame("梦幻计算器--SWE08008"); frame.setResizable(false);//不允许改变计算器的大小 frame.setLocation(250,150);//设置计算器的起始位置 frame.setBackground(Color.YELLOW); df = new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值