标题:编写一个能四则运算的计算机程序,哪位大佬讲解一下?
只看楼主
伪善者
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-1-7
结帖率:0
已结贴  问题点数:20 回复次数:7 
编写一个能四则运算的计算机程序,哪位大佬讲解一下?
实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除等运算,
有小数点、正负号、求倒数、退格和清零功能以及完善其它的辅助功能;界面简
洁适用。主要练习使用布局管理器设计一个计算器的界面,并练习使用事件监听
器处理数据的输入,并完成相关的计算。
搜索更多相关主题的帖子: 编写 四则运算 计算机 讲解 界面 
2019-01-09 19:20
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:7 
这弄个输入框,挨个添加按钮。
后台弄几个变量,点击按钮给变量赋值再计算就可以了呀。

saber,别哭.
2019-01-10 14:47
伪善者
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-1-7
得分:0 
好的咧,谢谢
2019-01-10 21:00
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:7 
作业?

剑栈风樯各苦辛,别时冰雪到时春
2019-01-10 22:39
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
程序代码:
package com.huawei.test;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
import java.util.regex.*;

import javax.swing.*;

public class Cal extends JFrame implements ActionListener {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    JTextField jtf = new JTextField();
    public Cal() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        add(jtf, BorderLayout.NORTH);
        jtf.setEditable(false);
        JPanel jp = new JPanel();
        List<String> list = new ArrayList<String>(20);
        List<String> list2 = new ArrayList<String>(Arrays.asList("+", "C", "-", "退格",
                "*",  "1/x", "+/-", ".", "/", "="));
        for(int i = 1; i < 10; i++) {
            list.add(i+"");
            if(i % 3 == 0) {
                list.addAll(list2.subList(0, 2));
                list2.remove(0);
                list2.remove(0);
            }
        }
        list.add("0");
        list.addAll(list2);
        jp.setLayout(new GridLayout(4, 5));
        for(String str : list) {
            JButton btn = new JButton(str);
            btn.addActionListener(this);
            jp.add(btn);
        }
        add(jp, BorderLayout.CENTER);
        pack();
        setLocation(200, 400);
        setResizable(false);
    }
    static String preTxt = null;
    @Override
    public void actionPerformed(ActionEvent e) {
        String btnTxt = ((JButton)e.getSource()).getText();
        if("C".equals(btnTxt)) {
            jtf.setText("");
        } else if("1/x".equals(btnTxt)) {
            double num = 0;
            try {
                num = Double.parseDouble(jtf.getText());
            } catch (Exception e2) {
                System.out.println(e2.getMessage());
            }
            jtf.setText(1/num+"");
        } else if("退格".equals(btnTxt)) {
            String content = jtf.getText();
            if(content.length()>0) {
                content = content.substring(0, content.length()-1);
            }
            jtf.setText(content);
        } else if("+/-".equals(btnTxt)) {
            String content = jtf.getText();
            if(content.startsWith("-")) {
                content = content.substring(1, content.length());
            } else {
                content = "-" + content;
            }
            jtf.setText(content);
        } else if("=".equals(btnTxt)) {
            String content = jtf.getText();
            content = getByRegex(content);
            jtf.setText(content);
        } else if(!"=".equals(preTxt)){
            jtf.setText(jtf.getText()+btnTxt);
        } else {
            jtf.setText(btnTxt);
        }
        preTxt = btnTxt;
    }
    private static String calc(String content, String regex) {
        String pattern = regex;
        Pattern r = (pattern);
        Matcher m = r.matcher(content);
        if (m.find( )) {
            int a = Integer.parseInt(m.group(1));
            int b = Integer.parseInt(m.group(3));
            int res=0;
            if("*".equals(m.group(2))) {
                res = a*b;
            }else if("/".equals(m.group(2))) {
                res = a/b;
            }else if("+".equals(m.group(2))) {
                res = a+b;
            }else if("-".equals(m.group(2))) {
                res = a-b;
            }
            return content.replace(m.group(), res+"");
        }
        return content;
    }
    private String getByRegex(String content) {
        for(String type : Arrays.asList("*", "/", "+", "-")) {
            content = calc(content, "(\\d+)(\\"+type+")(\\d+)");
            String content2 = null;
            while(!content.equals(content2)) {
                content2 = content;
                content = calc(content, "(\\d+)(\\"+type+")(\\d+)");
            }
        }
        return content;
    }
    public static void main(String[] args) {
        new Cal();
    }
}


剑栈风樯各苦辛,别时冰雪到时春
2019-01-10 23:25
xzc912
Rank: 1
等 级:新手上路
帖 子:17
专家分:7
注 册:2019-1-7
得分:7 
回复 5楼 林月儿
666666666
2019-01-11 21:00
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
回复 6楼 xzc912
哪里6,说不出来不准走
收到的鲜花
  • 幻紫灵心2019-01-12 12:33 送鲜花  1朵   附言:别舍不得了,就送了吧!
  • xzc9122019-01-12 16:48 送鲜花  1朵   附言:你厉害呀

剑栈风樯各苦辛,别时冰雪到时春
2019-01-11 21:44
xzc912
Rank: 1
等 级:新手上路
帖 子:17
专家分:7
注 册:2019-1-7
得分:0 
回复 7楼 林月儿
すごい[厉害了]
2019-01-13 15:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492604-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.232947 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved