计算器代码

xiaoxiao2026-06-08  3

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

public class Calculator { public static void main(String[] args) { CalculatorFrame frame=new CalculatorFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }

class CalculatorFrame extends JFrame { public CalculatorFrame() { setTitle("Calculator"); CalculatorPanel panel=new CalculatorPanel(); add(panel); pack(); } }

class CalculatorPanel extends Panel { public CalculatorPanel() { setLayout(new BorderLayout());

result=0; lastCommand="="; start=true; flag=true;

display=new JButton("0"); display.setEnabled(false); add(display,BorderLayout.NORTH);

ActionListener insert=new InsertAction(); ActionListener command=new CommandAction();

panel=new JPanel(); panel.setLayout(new GridLayout(4,5));

addButton("7",insert); addButton("8",insert); addButton("9",insert); addButton("/",command); addButton("CE",command);

addButton("4",insert); addButton("5",insert); addButton("6",insert); addButton("*",command); addButton("Backspace",command);

addButton("1",insert); addButton("2",insert); addButton("3",insert); addButton("-",command); addButton("sqrt",command);

addButton("0",insert); addButton(".",insert); addButton("=",command); addButton("+",command); addButton("1/x",command);

add(panel,BorderLayout.CENTER); } private void addButton(String label,ActionListener listener) { JButton button=new JButton(label); button.addActionListener(listener); panel.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input=event.getActionCommand(); if(start&&flag) { display.setText(""); start=false; } if(flag) display.setText(display.getText()+input); } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent event) { String command=event.getActionCommand();

if(command.equals("CE")) { display.setText("0"); start=true; flag=true; command="="; } else if(start&&flag) { if(command.equals("-")) { display.setText(command); start=false; } else if((command.equals("1/x")||command.equals("sqrt"))&&flag) calculate(Double.parseDouble(display.getText()),command); else if(flag) lastCommand=command; } else { if(command.equals("Backspace")&&flag) { String s=display.getText(); char[] s1=s.toCharArray(); if(s.length()>=2) { String s2=new String(s1,0,s.length()-1); display.setText(s2); } else { display.setText("0"); start=true; }

} else if(flag) { calculate(Double.parseDouble(display.getText()),command);

lastCommand=command; start=true; } } } }

public void calculate(double x,String command) { if(lastCommand.equals("+")) result+=x; else if(lastCommand.equals("-")) result-=x; else if(lastCommand.equals("/")) { if(x!=0) result/=x; else { display.setText("除数不能为0"); start=false; flag=false; return; } } else if(lastCommand.equals("*")) result*=x; else if(command.equals("1/x")) { if(x!=0) result=1/x; else { display.setText("除数不能为0"); start=false; flag=false; return; }

} else if(command.equals("sqrt")) { if(x>=0) result=Math.sqrt(x); else { display.setText("函数输入无效"); start=false; flag=false; return; } } else if(lastCommand.equals("=")) result=x;

display.setText(""+result); } private JButton display; private JPanel panel; private double result; private String lastCommand; private boolean start; private boolean flag;

}

相关资源:网页版计算器代码HTML手机计算器
转载请注明原文地址: https://www.6miu.com/read-5049798.html

最新回复(0)