import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class calculate extends JApplet implements ActionListener
{
private double arg = 0;
private String op = "=";
private boolean start = true;
private boolean 连算符标志 = false;
private boolean isback = true;
private double storem = 0;
private String[] KEYS ={"sin","log","7","8","9","/","mod",
"cos","x^y","4","5","6","*","%",
"tan","n!","1","2","3","-","1/x",
"cot","PI","0","+/-",".","+","="};
private String[] COMMAND = { "Backspace", "CE", "C" };
private String[] M = { "MC", "MR", "MS", "M+" };
private JTextField displayField;
private JTextField textField;
private JButton keys[] = new JButton[KEYS.length];
private JButton commands[] = new JButton[COMMAND.length];
private JButton m[] = new JButton[M.length];
public void init()
{
JPanel calckeys = new JPanel();
JPanel command = new JPanel();
JPanel calms = new JPanel();
JPanel calms2 = new JPanel();
calckeys.setLayout(new GridLayout(4, 7, 10, 10));
command.setLayout(new GridLayout(1, 3, 9, 9));
calms.setLayout(new BorderLayout(20, 20));
calms2.setLayout(new GridLayout(4, 1, 10, 10));
Container container = getContentPane();
container.setLayout(new BorderLayout(25, 25));
displayField = new JTextField(25);
displayField.setEditable(false); //设置在这里面不可改动数据
displayField.setHorizontalAlignment(JTextField.RIGHT);//设置在文本右端
textField = new JTextField();
textField.setEditable(false);
textField.setHorizontalAlignment(JTextField.CENTER);
for (int i = 0; i < KEYS.length; i++)
{
keys[i] = new JButton(KEYS[i]);
keys[i].setForeground(Color.blue);
calckeys.add(keys[i]);
keys[i].addActionListener(this);
}
keys[5].setForeground(Color.red);
keys[6].setForeground(Color.red);
keys[12].setForeground(Color.red);
keys[19].setForeground(Color.red);
keys[26].setForeground(Color.red);
keys[27].setForeground(Color.red);
keys[0].setForeground(Color.magenta);
keys[1].setForeground(Color.magenta);
keys[7].setForeground(Color.magenta);
keys[8].setForeground(Color.magenta);
keys[14].setForeground(Color.magenta);
keys[15].setForeground(Color.magenta);
keys[21].setForeground(Color.magenta);
for (int i = 0; i < COMMAND.length; i++)
{
commands[i] = new JButton(COMMAND[i]);
commands[i].setForeground(Color.red);
command.add(commands[i]);
commands[i].addActionListener(this);
}
calms.add("North", textField);
for (int i = 0; i < M.length; i++)
{
m[i] = new JButton(M[i]);
m[i].setForeground(Color.red);
calms2.add(m[i]);
m[i].addActionListener(this);
}
calms.add("Center",calms2);
JPanel panel1 = new JPanel();
panel1.setLayout(new BorderLayout(3,2));
panel1.add("North",command);
panel1.add("Center",calckeys);
JPanel top = new JPanel();
top.setLayout(new BorderLayout());
top.add("Center",displayField);
container.add("North",top);
container.add("West",calms);
container.add("Center",panel1);
commands[0].setToolTipText("清除最后一位数字");
commands[1].setToolTipText("清除当前显示数字");
commands[2].setToolTipText("清除当前运算");
}
public void actionPerformed(ActionEvent e)
{
String label = e.getActionCommand();
String str=displayField.getText(); //str为displayField中的内容
if(label=="C")
{
displayField.setText(" ");
op="=";
arg=0;
start=true;
isback=true;
}
else if(label=="Backspace")
{ if(isback==true){
if(str.length()>0&&!str.equals(" "))
displayField.setText(str.substring(0,str.length()-1));
else
{
displayField.setText(" ");
start=true;
}}
}
else if(label=="CE")
{
displayField.setText(" ");
start=true;
}
else if(label=="MC")
handleMC();
else if(label=="MR")
handleMR();
else if(label=="MS")
handleMS();
else if(label=="M+")
handleM();
else if(label=="+/-")
{ double doubleStr=Double.parseDouble(str);
doubleStr=-1*doubleStr;
displayField.setText(Double.toString(doubleStr));
}
else if(label=="%")
{
double doubleStr=Double.parseDouble(str);
doubleStr=doubleStr/100.0;
displayField.setText(Double.toString(doubleStr));
isback=false;
}
else if(label=="abs")
{
double doubleStr=Double.parseDouble(str);
doubleStr=Math.abs(doubleStr);
displayField.setText(Double.toString(doubleStr));
isback=false;
}
else if(label=="PI")
{
double doubleStr=Math.PI;
displayField.setText(Double.toString(doubleStr));
isback=false;
}
else if(label=="sin")
{
double doubleStr=Double.parseDouble(str);
doubleStr=Math.sin(doubleStr);
displayField.setText(Double.toString(doubleStr));
isback=false;
}
else if(label=="cos")
{
double doubleStr=Double.parseDouble(str);
doubleStr=Math.cos(doubleStr);
displayField.setText(Double.toString(doubleStr));
isback=false;
}
else if(label=="tan")
{
double doubleStr=Double.parseDouble(str);
if(Math.cos(doubleStr)==0)
{
displayField.setText("输入函数无效!");
start=true;
}
else
{
doubleStr=Math.tan(doubleStr);
displayField.setText(Double.toString(doubleStr));
isback=false;
}
}
else if(label=="cos")
{
double doubleStr=Double.parseDouble(str);
if(Math.sin(doubleStr)==0)
{
displayField.setText("输入函数无效!");
start=true;
}
else
{
doubleStr=1/Math.tan(doubleStr);
displayField.setText(Double.toString(doubleStr));
isback=false;
}
}
else if(label=="n!")
{
int intStr=Integer.parseInt(str);
int sum=1;
for(int i=1;i<=intStr;i++)
sum*=i;
displayField.setText(Integer.toString(sum));
isback=false;
}
else if(label=="log")
{
double doubleStr=Double.parseDouble(str);
doubleStr=Math.log(doubleStr);
displayField.setText(Double.toString(doubleStr));
isback=false;
}
else if(label=="1/x")
{
double doubleStr=Double.parseDouble(str);
if(doubleStr==0) {displayField.setText("0没有倒数!"); start=true;}
else {doubleStr=1/doubleStr;
displayField.setText(Double.toString(doubleStr));}
isback=false;
}
else if(label=="." )
{
boolean isDot = true;
if (displayField.getText().length()== 0)
isDot = false;
for (int i = 0; i < displayField.getText().length(); i++)
if ('.' == displayField.getText().charAt(i)) {
isDot = false;
break;
}
if (isDot == true)
displayField.setText(displayField.getText() + ".");
}
else if("0123456789".indexOf(label)>=0)
handleNumber(label);
else
handleOperater(label);
}
private void handleMS()
{
if (displayField.getText() != " ")
{
storem = Double.parseDouble(displayField.getText());
textField.setText("M");
}
}
private void handleMC()
{
textField.setText("");
storem = 0;
}
private void handleM()
{
//if(displayField.getText()!=" "&&textField.getText()=="M")
storem += Double.parseDouble(displayField.getText());
System.out.println(storem);
}
private void handleMR()
{
if (textField.getText() != " ")
displayField.setText(Double.toString(storem));
arg = storem;
start = true;
}
private void handleNumber(String key) //0123456789
{
if(start) displayField.setText(key);
else
displayField.setText(displayField.getText()+key);
start = false;
isback=true;
}
/*private void handleOperater(String s) //+,-,*,/,=,mod,x^y
{
if (start&&!连算符标志)
{op = s;连算符标志=true;}
else if(start&&连算符标志)
{
//double n = Double.parseDouble(displayField.getText());
if (op.equals("+")) { arg +=
java课程设计简单计算器
需积分: 9 143 浏览量
2008-12-30
12:38:34
上传
评论 1
收藏 7KB RAR 举报
kuledetong
- 粉丝: 1
- 资源: 9
最新资源
- 基于keras+fasterRCNN,在VOC格式的口罩数据集上训练,检测人群中有无戴口罩python源码+模型
- push_version
- 软件自制图像批量压缩工具
- 基于深度学习的抗梯度噪声的缺陷检测器python源码+文档说明+模型的预训练
- 基于python+pytorch+mysql实现停车场车牌识别管理系统源码+文档说明
- 基于QT+MySQl+OpenCV车牌识别搭建停车场管理系统C++源码+文档说明+界面展示
- 基于深度学习的停车场收费系统-车牌识别模块python源码+文档说明+博客教学
- 空白.pages
- 基于Java+Springboot+vue的智能停车场管理系统(源代码+数据库+9000字论文) 本项目前后端不分离+部署教程
- 基于SSM写的停车场管理系统,加入了车牌识别和数据分析+源码+文档说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈