⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.java

📁 是一款使用个计算器代码
💻 JAVA
字号:
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
public class Calculator extends JFrame implements ActionListener 
{ 
private boolean dotExist, operated, equaled; // 帮助运算的布尔变量 
private double storedNumber; // 目前的结果 
private char lastOperator; // 表示上一运算符 
private JTextField operation; // 结果栏 
private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符 
private JButton[] numbers; // 数字 
// 构造者 
public Calculator() 
{ 
setTitle("Calculator"); 
// 初始化变量 
dotExist = false; // 表示当前的数是否有小数点 
operated = false; // 表示任意运算符是否被按下 
equaled = false; // 表示等号是否被按下 
storedNumber = 0; 
lastOperator = '?'; 
// 初始化窗口变量 
operation = new JTextField("0"); 
operation.setEditable(false); 
numbers = new JButton[10]; 
for (int i = 0; i < 10; i++) 
numbers[i] = new JButton("" + i); 
dot = new JButton("."); 
plus = new JButton("+"); 
minus = new JButton("-"); 
multi = new JButton("*"); 
div = new JButton("/"); 
sqrt = new JButton("√"); 
equal = new JButton("="); 
changePN = new JButton("±"); 
clear = new JButton("AC"); 
// 将窗口物体放入窗口 
GridBagLayout layout = new GridBagLayout(); 
getContentPane().setLayout(layout); 
addComponent(layout, operation, 0, 0, 4, 1); 
addComponent(layout, numbers[1], 1, 0, 1, 1); 
addComponent(layout, numbers[2], 1, 1, 1, 1); 
addComponent(layout, numbers[3], 1, 2, 1, 1); 
addComponent(layout, numbers[4], 2, 0, 1, 1); 
addComponent(layout, numbers[5], 2, 1, 1, 1); 
addComponent(layout, numbers[6], 2, 2, 1, 1); 
addComponent(layout, numbers[7], 3, 0, 1, 1); 
addComponent(layout, numbers[8], 3, 1, 1, 1); 
addComponent(layout, numbers[9], 3, 2, 1, 1); 
addComponent(layout, dot, 4, 0, 1, 1); 
addComponent(layout, numbers[0], 4, 1, 1, 1); 
addComponent(layout, sqrt, 4, 2, 1, 1); 
addComponent(layout, plus, 1, 3, 1, 1); 
addComponent(layout, minus, 2, 3, 1, 1); 
addComponent(layout, multi, 3, 3, 1, 1); 
addComponent(layout, div, 4, 3, 1, 1); 
addComponent(layout, equal, 5, 0, 2, 1); 
addComponent(layout, changePN, 5, 2, 1, 1); 
addComponent(layout, clear, 5, 3, 1, 1); 
} 
// 对按钮进行反应的方法 
public void actionPerformed(ActionEvent e) 
{ 
JButton btn = (JButton)e.getSource(); 
if (btn == clear) 
{ 
operation.setText("0"); 
dotExist = false; 
storedNumber = 0; 
lastOperator = '?'; 
} 
else if (btn == equal) 
{ 
operate('='); 
equaled = true; 
} 
else if (btn == plus) 
{ 
operate('+'); 
equaled = false; 
} 
else if (btn == minus) 
{ 
operate('-'); 
equaled = false; 
} 
else if (btn == multi) 
{ 
operate('*'); 
equaled = false; 
} 
else if (btn == div) 
{ 
operate('/'); 
equaled = false; 
} 
else if (btn == changePN) 
{ 
operate('p'); 
operate('='); 
equaled = true; 
} 
else if (btn == sqrt) 
{ 
operate('s'); 
operate('='); 
equaled = true; 
} 
else 
{ 
if (equaled) 
storedNumber = 0; 
for (int i = 0; i < 10; i++) 
if (btn == numbers[i]) 
{ 
if (operation.getText().equals("0")) 
operation.setText("" + i); 
else if(! operated) 
operation.setText(operation.getText() + i); 
else 
{ 
operation.setText("" + i); 
operated = false; 
} 
} 
if (btn == dot && ! dotExist) 
{ 
operation.setText(operation.getText() + "."); 
dotExist = true; 
} 
} 
} 
// 进行运算的方法 
private void operate(char operator) 
{ 
double currentNumber = Double.valueOf(operation.getText()).doubleValue(); 
if (lastOperator == '?') 
storedNumber = currentNumber; 
else if (lastOperator == '+') 
storedNumber += currentNumber; 
else if (lastOperator == '-') 
storedNumber -= currentNumber; 
else if (lastOperator == '*') 
storedNumber *= currentNumber; 
else if (lastOperator == '/') 
storedNumber /= currentNumber; 
else if (lastOperator == 'p') 
storedNumber *= -1; 
else if (lastOperator == 's') 
storedNumber = Math.sqrt(currentNumber); 
else if (lastOperator == '=' && equaled) 
storedNumber = currentNumber; 
operation.setText("" + storedNumber); 
operated = true; 
lastOperator = operator; 
} 
// 快捷使用GridBagLayout的方法 
private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height) 
{ 
GridBagConstraints constraints = new GridBagConstraints(); 
constraints.fill = GridBagConstraints.BOTH; 
constraints.insets = new Insets(10, 2, 10, 2); 
constraints.weightx = 100; 
constraints.weighty = 100; 
constraints.gridx = col; 
constraints.gridy = row; 
constraints.gridwidth = width; 
constraints.gridheight = height; 
layout.setConstraints(component, constraints); 
if (component instanceof JButton) 
((JButton)component).addActionListener(this); 
getContentPane().add(component); 
} 
// 主方法初始化并显示窗口 
public static void main(String[] args) 
{ 
Calculator calc = new Calculator(); 
calc.setSize(290, 400); 
calc.setVisible(true); 
} 
} 

//如果你想加sin cos tan的话就建它们的按钮 在actionPerformed方法中的if-else语句中加else if (btn == sin){operate('S');operate('=');equaled = true;}然后在operate方法加对应的语句就行了.记忆M+, M-没时间搞 这个应该比较简单容易明白吧.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -