java基础案例11-2简易计算器

package com.itheima;

import javax.swing. * ;
import java.awt.*;

public class Main{
    public static void main(String[] args){
        //容器
        JFrame frame = new JFrame("calculator");
        frame.setLayout(new FlowLayout(FlowLayout.LEADING, 30, 20));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(590, 500);
        frame.setLocation(400, 400);
        //文本框
        Font Ff = new Font("幼圆", Font.BOLD, 20);//字体大小
        JTextField input = new JTextField(30);
        input.setEditable(false);
        input.setFont(Ff);
        input.setPreferredSize(new Dimension(200, 50));//框的大小
        JPanel panel = new JPanel();
        panel.add(input);
        frame.add(panel);

        //清除按钮
        JButton btn = new JButton("Clear");
        Font F = new Font("幼圆", Font.BOLD, 30);
        btn.setFont(F);
        JPanel panel1 = new JPanel();
        btn.setPreferredSize((new Dimension(150, 50)));
        panel1.add(btn);
        frame.add(panel1);
        btn.addActionListener(e->{
            input.setText("");
        });

        //N个按钮
        Font f = new Font("幼圆", Font.BOLD, 20);//字体
        JButton btn1 = new JButton("7");
        btn1.setFont(f);
        btn1.setPreferredSize((new Dimension(127, 50)));
        JButton btn2 = new JButton("8");
        btn2.setFont(f);
        btn2.setPreferredSize((new Dimension(127, 50)));
        JButton btn3 = new JButton("9");
        btn3.setFont(f);
        btn3.setPreferredSize((new Dimension(127, 50)));
        JButton btn4 = new JButton("/");
        btn4.setFont(f);
        btn4.setPreferredSize((new Dimension(127, 50)));
        JPanel panel2 = new JPanel();
        panel2.add(btn1);
        panel2.add(btn2);
        panel2.add(btn3);
        panel2.add(btn4);

        JButton btn5 = new JButton("4");
        btn5.setFont(f);
        btn5.setPreferredSize((new Dimension(127, 50)));
        JButton btn6 = new JButton("5");
        btn6.setFont(f);
        btn6.setPreferredSize((new Dimension(127, 50)));
        JButton btn7 = new JButton("6");
        btn7.setFont(f);
        btn7.setPreferredSize((new Dimension(127, 50)));
        JButton btn8 = new JButton("*");
        btn8.setFont(f);
        btn8.setPreferredSize((new Dimension(127, 50)));
        JPanel panel3 = new JPanel();
        panel3.add(btn5);
        panel3.add(btn6);
        panel3.add(btn7);
        panel3.add(btn8);

        JButton btn9 = new JButton("1");
        btn9.setFont(f);
        btn9.setPreferredSize((new Dimension(127, 50)));
        JButton btn10 = new JButton("2");
        btn10.setFont(f);
        btn10.setPreferredSize((new Dimension(127, 50)));
        JButton btn11 = new JButton("3");
        btn11.setFont(f);
        btn11.setPreferredSize((new Dimension(127, 50)));
        JButton btn12 = new JButton("-");
        btn12.setFont(f);
        btn12.setPreferredSize((new Dimension(127, 50)));
        JPanel panel4 = new JPanel();
        panel4.add(btn9);
        panel4.add(btn10);
        panel4.add(btn11);
        panel4.add(btn12);

        JButton btn13 = new JButton("0");
        btn13.setFont(f);
        btn13.setPreferredSize((new Dimension(127, 50)));
        JButton btn14 = new JButton(".");
        btn14.setFont(f);
        btn14.setPreferredSize((new Dimension(127, 50)));
        JButton btn15 = new JButton("=");
        btn15.setFont(f);
        btn15.setPreferredSize((new Dimension(127, 50)));
        JButton btn16 = new JButton("+");
        btn16.setFont(f);
        btn16.setPreferredSize((new Dimension(127, 50)));
        JPanel panel5 = new JPanel();
        panel5.add(btn13);
        panel5.add(btn14);
        panel5.add(btn15);
        panel5.add(btn16);

        frame.add(panel2);
        frame.add(panel3);
        frame.add(panel4);
        frame.add(panel5);

        //添加监听器
        btn1.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "7");
        });
        btn2.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "8");
        });
        btn3.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "9");
        });
        btn4.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "/");
        });
        btn5.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "4");
        });
        btn6.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "5");
        });
        btn7.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "6");
        });
        btn8.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "*");
        });
        btn9.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "1");
        });
        btn10.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "2");
        });
        btn11.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "3");
        });
        btn12.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "-");
        });
        btn13.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "0");
        });
        btn14.addActionListener(e->{
            String content = input.getText();
            input.setText(content + ".");
        });
        btn15.addActionListener(e->{
            String content = input.getText();
            String cont = cal(content);
            input.setText(content + "=" + cont);
        });
        btn16.addActionListener(e->{
            String content = input.getText();
            input.setText(content + "+");
        });

        frame.setVisible(true);
    }
    //进行字符串的计算
    public static String cal(String str)
    {
        char[] fh = {'+', '-', '*', '/'};
        char[] a = str.toCharArray();
        int d =  0;
        for(int i = 0; i < str.length(); i++)
            if(a[i] == '+' || a[i] == '-' || a[i] == '*' || a[i] == '/')
                d = i;
        String start = str.substring(0, d);
        String end = str.substring(d + 1);
        double num1 =  Double.parseDouble(start);
        double num2 =  Double.parseDouble(end);
        int t = 0;
        for(int i = 0; i < 4; i++)
            if(a[d] == fh[i])
                t  = i;
        String s = "";
        switch(t)
        {
            case 0: s = (num1 + num2) + ""; break;
            case 1: s = (num1 - num2) + "";break;
            case 2: s = (num1 * num2) + "";break;
            case 3: s = (num1 / num2) + "";break;
        }
        return s;
    }
}

### 回答1: 这道题目要求我们编写一个简单的计算器程序,可以进行加、减、乘、除四种基本运算。我们需要设计一个用户界面,让用户输入两个数字和运算符,然后计算出结果并输出。在编写程序时,需要注意输入的数字和运算符的类型,以及除数不能为零等错误情况的处理。最后,我们需要测试程序的各种功能,确保程序能够正确地计算出各种运算的结果。 ### 回答2: 本题要求实现一个简单计算器。该计算器可以进行加、减、乘、除四则运算,同时可以处理负数和小数。同时,本题还要求计算器能够正确处理加减乘除操作的优先级,即能够正确处理括号。计算器要求支持连续多次运算,即可以在上一次的运算结果上继续进行新的运算。 解题思路: 本题要求我们实现一个简单计算器,根据题目要求,我们可以采用以下步骤来实现该计算器: 1. 定义操作数栈和操作符栈,同时定义一个变量来保存当前操作符栈的栈顶元素。 2. 读入表达式,并将其转化为后缀表达式,这里可以采用栈和队列来实现。具体方法是循环扫描表达式的每个元素,判断其是否为数字或运算符,如果是数字则入队列中,如果是运算符则将其与操作符栈顶元素进行比较,如果该运算符优先级比栈顶元素低,则将栈顶元素压入操作数栈中,并将该运算符压入操作符栈中;如果该运算符优先级比栈顶元素高或相等,则将该运算符压入操作符栈中。如果扫描完整个表达式后,操作符栈中还有元素,则依次弹出操作符并压入操作数栈中。 3. 完成后缀表达式转换后,利用操作数栈和操作符栈来计算后缀表达式的值。具体方法是循环弹出操作数栈和操作符栈中的元素,如果该元素是数字,则将其压入一个临时栈中,如果该元素是操作符,则从临时栈中弹出两个元素进行计算,并将计算结果压入临时栈中。 4. 循环计算完毕后,临时栈中保存的元素就是最终的计算结果。 需要注意的是,对于括号的处理,我们可以采用递归的方式来处理。具体方法是对于每个表达式,如果存在括号,则将括号内的内容作为一个新的表达式进行处理,直到所有的括号都被处理完毕。 参考代码: 以下是一个使用C语言实现的简单计算器的参考代码: ### 回答3: 习题6-7 简单计算器 这道题是一道比较简单的计算器模拟问题,主要考察的是对字符串和数字处理的能力。 首先,需要定义好输入格式。题目给出的输入格式是"opr num"的形式,其中opr是操作符,可以是"+", "-", "*", "/", "mod",num是操作数,可以是任意整数或者0以上一位整数。 其次,需要判断输入是否符合格式。我们可以使用Python中的字符串操作函数进行分割,将opr和num分别取出来,然后分别判断其是否符合要求。 接着,需要根据不同的操作符执行相应的计算,并将计算结果输出。对于加、减、乘、除和取模操作,可以直接使用Python中的内置运算符完成计算。唯一需要注意的是除法运算可能会出现小数,需要进行取整或者四舍五入。对于输入格式不符合要求的情况,需要输出"ERROR"。 最后,需要使用while循环来不断接收输入,并根据输入执行相应的计算,并将结果输出,直到输入"end"退出循环。 代码实现如下: ```python while True: s = input() if s == 'end': break try: opr, num = s.split() except ValueError: print("ERROR") continue if opr not in ['+', '-', '*', '/', 'mod'] or not num.isdigit(): print("ERROR") continue num = int(num) if opr == '+': res = num elif opr == '-': res = -num elif opr == '*': res *= num elif opr == '/': res /= num res = int(res) if res == int(res) else round(res) # 取整或四舍五入 elif opr == 'mod': res %= num print(res) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值