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

📄 calculator.java

📁 简单的计算器程序 经由本人改动 可实现常见的一些计算功能 有兴趣的朋友可以拿去做初级编程的练习
💻 JAVA
字号:
//算器
import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.lang.*; 
import java.applet.Applet; 
import javax.swing.*; 
import javax.swing.border.*; 
public class Calculator extends JApplet implements ActionListener 
{ 
private final String[] KEYS={"7","8","9","/","sqrt", 
"4","5","6","*","%", 
"1","2","3","-","1/x", 
"0","+/-",".","+","=" 
}; 
private final String[] COMMAND={"Backspace","CE","C"}; 
private final String[] M={"log()","MC","MR","MS","M+"}; 
private JButton keys[]=new JButton[KEYS.length]; 
private JButton commands[]=new JButton[COMMAND.length]; 
private JButton m[]=new JButton[M.length]; 
private JTextField display =new JTextField("0"); 
// public JTextField setHorizontalAlignment(int alignment); 
// private JTextField display.setHorizontalAlignment(JTextField.RIGHT)=new JTextField("0"); 
private void setup() 
{ 
display.setHorizontalAlignment(JTextField.RIGHT); 
JPanel calckeys=new JPanel(); 
JPanel command=new JPanel(); 
JPanel calms=new JPanel(); 
calckeys.setLayout(new GridLayout(4,5,3,3)); 
command.setLayout(new GridLayout(1,3,3,3)); 
calms.setLayout(new GridLayout(5,1,3,3)); 
for(int i=0;i<KEYS.length;i++) 
{ 
keys[i]=new JButton(KEYS[i]); 
calckeys.add(keys[i]); 
keys[i].setForeground(Color.blue); 
} 
keys[3].setForeground(Color.red); 
keys[4].setForeground(Color.red); 
keys[8].setForeground(Color.red); 
keys[9].setForeground(Color.red); 
keys[13].setForeground(Color.red); 
keys[14].setForeground(Color.red); 
keys[18].setForeground(Color.red); 
keys[19].setForeground(Color.red); 
for(int i=0;i<COMMAND.length;i++) 
{ 
commands[i]=new JButton(COMMAND[i]); 
command.add(commands[i]); 
commands[i].setForeground(Color.red); 
} 
for(int i=0;i<M.length;i++) 
{ 
m[i]=new JButton(M[i]); 
calms.add(m[i]); 
m[i].setForeground(Color.red); 
} 
JPanel panel1=new JPanel(); 
panel1.setLayout(new BorderLayout(3,3)); 
panel1.add("North",command); 
panel1.add("Center",calckeys); 
JPanel top=new JPanel(); 
top.setLayout(new BorderLayout()); 
display.setBackground(Color.WHITE); 
top.add("Center",display); 
getContentPane().setLayout(new BorderLayout(3,5)); 
getContentPane().add("North",top); 
getContentPane().add("Center",panel1); 
getContentPane().add("West",calms); 
} 
public void init() 
{ 
setup(); 
for(int i=0;i<KEYS.length;i++) 
{ 
keys[i].addActionListener(this); 
} 
for(int i=0;i<COMMAND.length;i++) 
{ 
commands[i].addActionListener(this); 
} 
for(int i=0;i<M.length;i++) 
{ 
m[i].addActionListener(this); 
} 
display.setEditable(false); 
} 
public void actionPerformed(ActionEvent e) 
{ 
String label=e.getActionCommand(); 
// double zero=e.getActionCommand(); 
if(label=="C") 
handleC(); 
else if(label=="Backspace") 
handleBackspace(); 
else if(label=="CE") 
display.setText("0"); 
else if("0123456789.".indexOf(label)>=0) 
{handleNumber(label); 
// handlezero(zero); 
} 
else 
handleOperator(label); 
} 
private boolean firstDigit=true; 
private void handleNumber(String key) 
{ 
if(firstDigit) 
display.setText(key); 
else if((key.equals("."))&&(display.getText().indexOf(".")<0)) 
display.setText(display.getText()+"."); 
else if(!key.equals(".")) 
display.setText(display.getText()+key); 
firstDigit=false; 
} 
//private void handlezero(String key) 
//{ 
// if(!((double)display.setText(key)) 
// display.setText(0); 
// } 
private double number=0.0; 
private String operator="="; 
private void handleOperator(String key) 
{ 
if(operator.equals("/")) 
{ 
if(getNumberFromDisplay()==0.0) 
display.setText("除数不能为零"); 
else 
{ 
number/=getNumberFromDisplay(); 
long t1; 
double t2; 
t1=(long)number; 
t2=number-t1; 
if(t2==0) 
display.setText(String.valueOf(t1)); 
else 
display.setText(String.valueOf(number)); 
} 
} 
else if(operator.equals("1/x")) 
{ 
if(number==0.0) 
display.setText("零没有倒数"); 
else 
{ 
number=1/number; 
long t1; 
double t2; 
t1=(long)number; 
t2=number-t1; 
if(t2==0) 
display.setText(String.valueOf(t1)); 
else 
display.setText(String.valueOf(number)); 
} 
} 
else if(operator.equals("+")) 
number+=getNumberFromDisplay(); 
else if(operator.equals("-")) 
number-=getNumberFromDisplay(); 
else if(operator.equals("*")) 
number*=getNumberFromDisplay(); 
else if(operator.equals("sqrt")) 
{ 
number=Math.sqrt(number); 
}
else if(operator.equals("log()"))
{number=Math.log(number);
}
else if(operator.equals("%")) 
number=number/100; 
else if(operator.equals("+/-")) 
number=number*(-1); 
else if(operator.equals("=")) 
number=getNumberFromDisplay(); 
long t1; 
double t2; 
t1=(long)number; 
t2=number-t1; 
if(t2==0) 
display.setText(String.valueOf(t1)); 
else 
display.setText(String.valueOf(number)); 
operator=key; 
firstDigit=true; 
} 
private double getNumberFromDisplay() 
{ 
return Double.valueOf(display.getText()).doubleValue(); 
} 
private void handleC() 
{ 
display.setText("0"); 
firstDigit=true; 
operator="="; 
} 
private void handleBackspace() 
{ 
String text=display.getText(); 
int i=text.length(); 
if(i>0) 
{ 
text=text.substring(0,i-1); 
if(text.length()==0) 
{ 
display.setText("0"); 
firstDigit=true; 
operator="="; 
} 
else 
display.setText(text); 
} 
} 
public static void main(String args[]) 
{ 
JFrame f=new JFrame(); 
Calculator Calculator1=new Calculator(); 
Calculator1.init(); 
f.getContentPane().add("Center",Calculator1); 
f.setVisible(true); 
f.setBounds(300,200,380,245); 
f.setBackground(Color.LIGHT_GRAY); 
f.validate(); 
f.setResizable(false); 
f.addWindowListener(new WindowAdapter() 
{ 
public void windowClosing(WindowEvent e) 
{ 
System.exit(0); 
} 
}); 
f.setTitle("计算器"); 
} 
}

⌨️ 快捷键说明

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