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

📄 calculator.txt

📁 用JAVA函数写的一个小型计算器,对JAVA函数使用比较有典型意义!
💻 TXT
字号:
这里是一个计算器的图形界面设计代码,包含图形界面代码,各个按钮的响应函数。 

/** 
* 简单的计算器程序 
* 
*/ 

import java.awt.*; 
import java.awt.event.*; 

public class CalcAppDemo extends Frame{ 
private TextField t_result; 
private Panel p_main; //主面板 
private Panel p_num; //数字面板 
private Panel p_oper; //操作符面板 
private Panel p_show; //显示面板 
private Button b_num[]; //数字按钮 
private Button b_oper[]; //操作符面板 

public CalcAppDemo(String title){ 
setTitle(title); 
t_result = new TextField("0.0", 21); 
p_main = new Panel(); 
p_num = new Panel(); 
p_oper = new Panel(); 
p_show = new Panel(); 
p_main.setLayout(new BorderLayout()); 
p_num.setLayout(new GridLayout(4, 3, 1, 1)); 
p_oper.setLayout(new GridLayout(4, 2, 1, 1)); 

b_num = new Button[12]; 
for(int i=0; i<9; i++) 
{ 
b_num[i] = new Button(new Integer(i+1).toString()); 
} 
b_num[9] = new Button("0"); 
b_num[10] = new Button("cls"); 
b_num[11] = new Button("."); 
for(int i=0; i<12; i++) 
{ 
p_num.add(b_num[i]); 
} 

b_oper = new Button[8]; 
b_oper[0] = new Button("+"); 
b_oper[1] = new Button("-"); 
b_oper[2] = new Button("*"); 
b_oper[3] = new Button("/"); 
b_oper[4] = new Button("pow"); 
b_oper[5] = new Button("sqrt"); 
b_oper[6] = new Button("+/-"); 
b_oper[7] = new Button("="); 
for(int i=0; i<8; i++) //                                                                                         
{ 
p_oper.add(b_oper[i]); 
} 

t_result.setEditable(false); 
p_show.add(t_result, BorderLayout.NORTH); 
p_main.add(p_show, BorderLayout.NORTH); 
p_main.add(p_num, BorderLayout.WEST); 
p_main.add(p_oper, BorderLayout.EAST); 
this.add(p_main, BorderLayout.CENTER); 
setSize(400, 400); 
setResizable(false); 
pack(); 

this.addWindowListener(new WindowAdapter(){ 
public void windowClosing(WindowEvent e) 
{ 
System.exit(0); 
} 
}); 
ButtonListener b1 = new ButtonListener(); 
for(int i=0; i<12; i++) 
{ 
b_num[i].addActionListener(b1); 
} 
for(int i=0; i<8; i++) 
{ 
b_oper[i].addActionListener(b1); 
} 
} 

class ButtonListener implements ActionListener 
{ 
private String lastOp; //存储上一此操作符 
private String strVal; //存储数字对应的字符串 
private double total; //总数 
private double number; //存储新输入的数 
private boolean firsttime; //判断是否第一次按下的是操作符按钮 
private boolean operatorPressed;//判断是否已经按过操作符按钮 

ButtonListener() 
{ 
firsttime = true; 
strVal = ""; 
} 

//事件处理器 
public void actionPerformed(ActionEvent e) 
{ 
String s = ((Button)e.getSource()).getLabel().trim(); 

if(Character.isDigit(s.charAt(0))) 
{//判断是操作数还是操作符 
handleNumber(s); 
} 
else 
{ 
calculate(s); 
} 
} 

//判断是一元操作符还是二元操作符,并根据操作符类型做计算 
void calculate(String op) 
{ 
operatorPressed = true; 

if(firsttime&&! isUnary(op)) 
{ 
total = getNumberOnDisplay(); 
firsttime = false; 
} 
if(isUnary(op)) 
{ 
handleUnaryOp(op); 
} 
else if(lastOp != null) 
{ 
handleBinaryOp(lastOp); 
} 
if(! isUnary(op)) 
{ 
lastOp = op; 
} 
} 

//判断是否一元操作符 
boolean isUnary(String s) 
{ 
return s.equals("=") 
||s.equals("cls")||s.equals("sqrt") 
||s.equals("+/-")||s.equals("."); 
} 

//处理一元操作符 
void handleUnaryOp(String op) 
{ 
if(op.equals("+/-")) 
{// 
number = negate(getNumberOnDisplay() + ""); 
t_result.setText(""); 
t_result.setText(number + ""); 
return; 
}else if(op.equals(".")) 
{ 
handleDecPoint(); 
return; 
}else if(op.equals("sqrt")) 
{ 
number = Math.sqrt(getNumberOnDisplay()); 
t_result.setText(""); 
t_result.setText(number + ""); 
return; 
}else if(op.equals("=")) 
{// 
if(lastOp!= null && !isUnary(lastOp)) 
{ 
handleBinaryOp(lastOp); 
} 
lastOp = null; 
firsttime = true; 
return; 
}else 
{ 
clear(); 
} 
} 

//处理二元运算符 
void handleBinaryOp(String op) 
{ 
if(op.equals("+")) 
{ 
total +=number; 
}else if(op.equals("-")) 
{ 
total -=number; 
}else if(op.equals("*")) 
{ 
total *=number; 
}else if(op.equals("/")) 
{ 
try 
{ 
total /=number; 
}catch(ArithmeticException ae){} 
}else if(op.equals("pow")) 
total = Math.pow(total, number); 
//t_result.setText(""); 
lastOp = null; 
// strVal = ""; 
number = 0; 
t_result.setText(total + ""); 
} 

//该方法用于处理数字按钮 
void handleNumber(String s) 
{ 
if(!operatorPressed) 
{ 
strVal += s; 
}else 
{ 
operatorPressed = false; 
strVal = s; 
} 
// 
number = new Double(strVal).doubleValue(); 
t_result.setText(""); 
t_result.setText(strVal); 
} 

//该方法用于按下"."按钮 
void handleDecPoint() 
{ 
operatorPressed = false; 
// 
if(strVal.indexOf(".")<0) 
{ 
strVal += "."; 
} 
t_result.setText(""); 
t_result.setText(strVal); 
} 

//该方法用于将一个数求反 
double negate(String s) 
{ 
operatorPressed = false; 
//如果是一个整数,去掉小数点后面的0 
if(number == (int)number) 
{ 
s = s.substring(0,s.indexOf(".")); 
} 

//如果无"-"增加在该数的前面 
if(s.indexOf("-")<0) 
{ 
strVal = "-" + s; 
} 
else 
{ 
strVal = s.substring(1); 
} 
return new Double(strVal).doubleValue(); 
} 

//将显示框中的值转换成Double 
double getNumberOnDisplay() 
{ 
return new Double(t_result.getText()).doubleValue(); 
} 

//清除屏幕并设置所有的标识 
void clear() 
{ 
firsttime = true; 
lastOp = null; 
strVal = ""; 
total = 0; 
number = 0; 
t_result.setText("0"); 
} 
} 


public static void main(String[] args) { 
CalcAppDemo c = new CalcAppDemo("简单的计算器程序"); 
c.setVisible(true); 
} 

} 

⌨️ 快捷键说明

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