java编译完成一个整数计算器,该计算器需包含整数的加法、减法、乘法功能

要求:
(1) 所有数字需使用链表的数据结构保存;
(2) 需输出正确的运算结果;
(3) 在运算时不得将链表转化为数字进行计算



import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calc extends JFrame implements ActionListener,KeyListener{

    JTextField txtResult;
    JButton btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9;
    JButton btnAdd,btnSub,btnTimes,btnDiv,btnEquals,btnDot;
    JButton btnClear,btnExit;
    JPanel centerPanel,southPanel;
    double num1=0,num2=0,result=0;
    String opr= "+";
    public Calc() {
        setTitle("计算器2016");
        txtResult = new JTextField("0.0");
        //只读
//        txtResult.setEditable(false);
        
        centerPanel = new JPanel(new GridLayout(4,4,5,5));
        southPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        add(txtResult,BorderLayout.NORTH);
        txtResult.addKeyListener(this);
        add(centerPanel);
        btn0 = new JButton("0");
        btn1 = new JButton("1");
        btn2 = new JButton("2");
        btn3 = new JButton("3");
        btn4 = new JButton("4");
        btn5 = new JButton("5");
        btn6 = new JButton("6");
        btn7 = new JButton("7");
        btn8 = new JButton("8");
        btn9 = new JButton("9");
        btnAdd = new JButton("+");
        btnSub = new JButton("-");
        btnTimes = new JButton("*");
        btnDiv = new JButton("/");
        btnDot = new JButton(".");
        btnEquals = new JButton("=");
        centerPanel.add(btn7);
        centerPanel.add(btn8);
        centerPanel.add(btn9);
        centerPanel.add(btnDiv);
        centerPanel.add(btn4);
        centerPanel.add(btn5);
        centerPanel.add(btn6);
        centerPanel.add(btnTimes);
        centerPanel.add(btn1);
        centerPanel.add(btn2);
        centerPanel.add(btn3);
        centerPanel.add(btnSub);
        centerPanel.add(btn0);
        centerPanel.add(btnDot);
        centerPanel.add(btnEquals);
        centerPanel.add(btnAdd);
        
        
        
        add(southPanel,BorderLayout.SOUTH);
        btnClear = new JButton("清除");
        btnExit = new JButton("关闭");
        southPanel.add(btnClear);
        southPanel.add(btnExit);
        
        //监听
        btn0.addActionListener(this);
        btn1.addActionListener(this);
        btn2.addActionListener(this);
        btn3.addActionListener(this);
        btn4.addActionListener(this);
        btn5.addActionListener(this);
        btn6.addActionListener(this);
        btn7.addActionListener(this);
        btn8.addActionListener(this);
        btn9.addActionListener(this);
        btnAdd.addActionListener(this);
        btnSub.addActionListener(this);
        btnTimes.addActionListener(this);
        btnDiv.addActionListener(this);
        btnDot.addActionListener(this);
        btnEquals.addActionListener(this);
        btnClear.addActionListener(this);
        btnExit.addActionListener(this);
        
        
        setSize(300, 300);
        setVisible(true);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
    }
    public static void main(String[] args) {
        new Calc();
    }
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==btnClear){
            txtResult.setText("0");
        }else if(e.getSource()==btnExit){
            System.exit(0);
        }else if(e.getSource()==btn0){
            setText("0");
        }else if(e.getSource()==btn1){
            setText("1");
        }else if(e.getSource()==btn2){
            setText("2");
        }else if(e.getSource()==btn3){
            setText("3");
        }else if(e.getSource()==btn4){
            setText("4");
        }else if(e.getSource()==btn5){
            setText("5");
        }else if(e.getSource()==btn6){
            setText("6");
        }else if(e.getSource()==btn7){
            setText("7");
        }else if(e.getSource()==btn8){
            setText("8");
        }else if(e.getSource()==btn9){
            setText("9");
        }else if(e.getSource()==btnDot){
            setText(".");
        }else if(e.getSource()==btnAdd){
            opr = "+";
            operator();
            //清空内容
            txtResult.setText("");
        }else if(e.getSource()==btnSub){
            opr = "-";
            operator();
            //清空内容
            txtResult.setText("");
        }else if(e.getSource()==btnTimes){
            opr = "*";
            operator();
            //清空内容
            txtResult.setText("");
        }else if(e.getSource()==btnDiv){
            opr = "/";
            operator();
            //清空内容
            txtResult.setText("");
        }else if(e.getSource()==btnEquals){
            operator();
            txtResult.setText(result+"");
            num1=num2=result=0;
        }
        
    }
    public void setText(String s){
        //获取文本框的值
        String str = txtResult.getText().trim();
        //如果文本框里面的值是0,那么初始化为空值
        if(str.equals("" ) || Double.parseDouble(str)==0){
            str = "";
        }
        str += s;
        //设置文本框的值
        txtResult.setText(str);
    }
    public void operator(){
        if(txtResult.getText().equals("")){
            num1=0;
        }else{
            num1 = Double.parseDouble(txtResult.getText().trim());
        }
        System.out.println("num1="+num1+";num2="+num2);
        if(opr.equals("+")){
            result = num1+num2;
        }else if(opr.equals("-")){
            result = num2-num1;
        }else if(opr.equals("*")){
            result = num1*num2;
        }else if(opr.equals("/")){
            result = num2/num1;
        }
        num2=num1;
    }
    String m_temp;
    public void keyPressed(KeyEvent e) {
        m_temp = txtResult.getText();
        
        
    }
    public void keyReleased(KeyEvent e) {
        try{
            Double.parseDouble(txtResult.getText());
        }catch(Exception ex){
            txtResult.setText(m_temp);
        }
    }
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
}

简单的参考代码如下

public class Hello{
    public static void main(String[] args){
        java.util.Scanner sc = new java.util.Scanner(System.in);
        try{
            System.out.println("请输入要运算的第一个数..");
            float f1 = sc.nextFloat();
            System.out.println("输入运算符+ - * /(默认不输入为+).");
            char fu = '+';
            //String fuhao = next();
            try{
                char[] zhuan = sc.next().toCharArray();
                fu = zhuan[0];
            }catch(Exception e){System.out.println("运算符输入错误");}
            System.out.println("请输入要运算的第二个数..");
            float f2 = sc.nextFloat();
            switch(fu){
                case '+':
                    System.out.println("加法:" + (f1 + f2));
                break;
                case '-':
                    System.out.println("减法:" + (f1 - f2));
                break;
                case '/':
                        if(f2 == 0){
                            System.out.println("被除数不能为0");
                        }else{
                        System.out.println("除法:" + (f1 / f2));
                    }
                break;
                 case '*':
                    System.out.println("乘法:" + (f1 * f2));
                break;
                default :
                    System.out.println("不存在的符号");
            }
               
        }catch(Exception e){System.out.println("请输入数字或小数");}
    }
}

可以参考我写的计算器的文章

java 输入几个数进行四则运算,输出false或true,简单计算器的实现_西凉的悲伤博客-CSDN博客 输入一个数n,然后接着输入n行每行含有4个整数的四则运算。输入中没有括号,若有乘号*或除号/的按顺序先算乘除再算加减,除法保留整数即可。最后计算每一行的结果,并与24比较,结果是24则输出true,否则输出false。示例如下:核心是1.乘除加减优先级的实现 2.字符串与整数的转换3.用什么存储输入以及每一次运算后的结果代码如下:import java.util.ArrayList... https://blog.csdn.net/qq_33697094/article/details/93470232