写了一个简单的小计算器,带历史记录

这篇博客展示了如何使用Java Swing库构建一个具备基本运算和历史记录功能的简单计算器。通过定义按钮事件监听器,实现了数字输入、运算符选择、历史记录显示等功能。
摘要由CSDN通过智能技术生成
package myCalculator;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListener{//*****************全局变量********************JTextField jtf=new JTextField(21);//显示区初始显示0,长度40boolean flagjtf=true;//是否是0float result;//结果存放int calnum=1;//次数String caltext="";//存放要显示的字符enum Suanfa{jia,jian,cheng,chu};Suanfa suanfa=null;//标记是哪种算法Suanfa lastsuanfa=null;//上一次的算法JTextArea jta=new JTextArea("历史记录:\n",9,30);//***************************************** public Calculator(){//*****************初始设置********************Container dingceng=getContentPane();//定义顶层容器setLayout(new BorderLayout());//新建管理器//panelJPanel pxs=new JPanel();JPanel phistory=new JPanel();JPanel pall=new JPanel();GridBagLayout allgb=new GridBagLayout();pall.setLayout(allgb);GridBagConstraints call=new GridBagConstraints(); jtf.setHorizontalAlignment(JTextField.RIGHT);//右对齐 jtf.setText("0"); pxs.add(jtf); phistory.add(jta); JButton bnum0=new JButton("0");JButton bnum1=new JButton("1");JButton bnum2=new JButton("2");JButton bnum3=new JButton("3");JButton bnum4=new JButton("4");JButton bnum5=new JButton("5");JButton bnum6=new JButton("6");JButton bnum7=new JButton("7");JButton bnum8=new JButton("8");JButton bnum9=new JButton("9");JButton bdot=new JButton(".");JButton bequ=new JButton("=");JButton bjia=new JButton("+");JButton bjian=new JButton("-");JButton bcheng=new JButton("×");JButton bchu=new JButton("÷");JButton bql=new JButton("C");JButton bce=new JButton("CE");JButton btuige=new JButton("←");JPanel panniu=new JPanel();GridBagLayout lanniu=new GridBagLayout();//新建网格组布局panniu.setLayout(lanniu);GridBagConstraints cons=new GridBagConstraints();cons.fill=GridBagConstraints.BOTH;//有剩余空间,空着cons.weightx=0;cons.weighty=0;//增量域=0cons.gridwidth=1;cons.gridheight=1;//大小cons.insets=new Insets(2,2,2,2); /*位置*/ cons.gridx=0;cons.gridy=0;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum7,cons);cons.gridx=1;cons.gridy
以下是一个简单有记录功能的安卓计算器代码示例: ```java import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; public class CalculatorActivity extends AppCompatActivity { private TextView display; private ArrayList<String> history; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calculator); // 初始化 TextView 和记录历史记录的 ArrayList display = findViewById(R.id.display); history = new ArrayList<>(); // 设置数字按钮的点击事件 for (int i = 0; i < 10; i++) { int resId = getResources().getIdentifier("button" + i, "id", getPackageName()); Button button = findViewById(resId); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = ((Button) view).getText().toString(); display.append(text); } }); } // 设置操作符和小数点按钮的点击事件 Button dot = findViewById(R.id.button_dot); dot.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = display.getText().toString(); if (!text.contains(".")) { display.append("."); } } }); Button add = findViewById(R.id.button_add); add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = display.getText().toString(); if (text.length() != 0 && !text.endsWith("+") && !text.endsWith("-") && !text.endsWith("*") && !text.endsWith("/")) { display.append("+"); } } }); Button subtract = findViewById(R.id.button_subtract); subtract.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = display.getText().toString(); if (text.length() != 0 && !text.endsWith("+") && !text.endsWith("-") && !text.endsWith("*") && !text.endsWith("/")) { display.append("-"); } } }); Button multiply = findViewById(R.id.button_multiply); multiply.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = display.getText().toString(); if (text.length() != 0 && !text.endsWith("+") && !text.endsWith("-") && !text.endsWith("*") && !text.endsWith("/")) { display.append("*"); } } }); Button divide = findViewById(R.id.button_divide); divide.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = display.getText().toString(); if (text.length() != 0 && !text.endsWith("+") && !text.endsWith("-") && !text.endsWith("*") && !text.endsWith("/")) { display.append("/"); } } }); // 设置清除按钮的点击事件 Button clear = findViewById(R.id.button_clear); clear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { display.setText(""); } }); // 设置等号按钮的点击事件 Button equals = findViewById(R.id.button_equals); equals.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = display.getText().toString(); if (text.length() != 0 && !text.endsWith("+") && !text.endsWith("-") && !text.endsWith("*") && !text.endsWith("/")) { double result = evaluate(text); display.setText(Double.toString(result)); history.add(text + " = " + result); } } }); } // 计算表达式的方法 private double evaluate(String expression) { String[] tokens = expression.split("(?<=[\\d.])(?=[^\\d.])|(?<=[^\\d.])(?=[\\d.])"); double result = Double.parseDouble(tokens[0]); for (int i = 1; i < tokens.length; i += 2) { String operator = tokens[i]; double operand = Double.parseDouble(tokens[i + 1]); switch (operator) { case "+": result += operand; break; case "-": result -= operand; break; case "*": result *= operand; break; case "/": result /= operand; break; } } return result; } } ``` 这个计算器可以进行加减乘除的计算,并且按下等于号会显示计算结果并记录历史记录历史记录存储在一个 ArrayList 中,可以在需要的时候进行显示。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值