📄 calculate.java
字号:
/**
* AWT Sample application
*
* @author
* @version 1.00 07/11/02
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.StringBuffer;
/**
* Sample application using Frame.
*
* @author
* @version 1.00 07/11/02
*/
public class Calculate {
public static void main(String[] args) {
// Create application frame.
CalculateFrame frame = new CalculateFrame();
// Show frame
frame.setVisible(true);
}
}
class CalculateFrame extends Frame implements ActionListener{
/**
* The constructor.
*
*/
String num=new String();
Integer [] number=new Integer[3];
int flag=0;
TextField text=new TextField();
Panel box=new Panel();
public CalculateFrame() {
MenuBar menuBar = new MenuBar();
Menu menuFile = new Menu();
MenuItem menuFileExit = new MenuItem();
menuFile.setLabel("File");
menuFileExit.setLabel("Exit");
draw();
// Add action listener.for the menu button
menuFileExit.addActionListener
(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
CalculateFrame.this.windowClosed();
}
}
);
menuFile.add(menuFileExit);
menuBar.add(menuFile);
setTitle("Calculate");
setMenuBar(menuBar);
setSize(new Dimension(200, 200));
// Add window listener.
this.addWindowListener
(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
CalculateFrame.this.windowClosed();
}
}
);
}
public void draw()
{
setLayout(new BorderLayout());
//TextField text=new TextField();
//Panel box=new Panel();
add(text,BorderLayout.NORTH);
add(box,BorderLayout.CENTER);
box.setLayout(new GridLayout(4,4));
Button num1=new Button("1");
box.add(num1);
num1.addActionListener(this);
Button num2=new Button("2");
box.add(num2);
num2.addActionListener(this);
Button num3=new Button("3");
box.add(num3);
num3.addActionListener(this);
Button num4=new Button("+");
box.add(num4);
num4.addActionListener(this);
Button num5=new Button("4");
box.add(num5);
num5.addActionListener(this);
Button num6=new Button("5");
box.add(num6);
num6.addActionListener(this);
Button num7=new Button("6");
box.add(num7);
num7.addActionListener(this);
Button num8=new Button("-");
box.add(num8);
num8.addActionListener(this);
Button num9=new Button("7");
box.add(num9);
num9.addActionListener(this);
Button num10=new Button("8");
box.add(num10);
num10.addActionListener(this);
Button num11=new Button("9");
box.add(num11);
num11.addActionListener(this);
Button num12=new Button("*");
box.add(num12);
num12.addActionListener(this);
Button num13=new Button("C");
box.add(num13);
num13.addActionListener(this);
Button num14=new Button(".");
box.add(num14);
num14.addActionListener(this);
Button num15=new Button("=");
box.add(num15);
num15.addActionListener(this);
Button num16=new Button("/");
box.add(num16);
num16.addActionListener(this);
}
public void actionPerformed(ActionEvent e) //noerror would happen and support negative but not float
{
//int flag=0;
Button st=new Button();
String lable=new String();
// String num=new String();
// int [] number;
// number=new int[3];
st=(Button)e.getSource();
lable=st.getActionCommand();
if(lable=="1"||lable=="2"||lable=="3"||lable=="4"||lable=="5"||lable=="6"||lable=="7"||lable=="8"||lable=="9"||lable==".")
{// System.out.println("here");
num=num+lable;
// System.out.println(num);
text.setText(num);
}
else{ if(lable=="+"||lable=="-"||lable=="*"||lable=="/")
{ if(flag==0)
{ number[flag++]=trans(num);
/* switch (lable)//because switch can only receive a integer;
{ case "+":number[flag++]=0;break;
case "-":number[flag++]=1;break;
case "*":number[flag++]=2;break;
case "/":number[flag++]=3;break;
}*/
if(lable=="+")
number[flag++]=0;
else {if(lable=="-")
number[flag++]=1;
else
{ if(lable=="*")
number[flag++]=2;
else
number[flag++]=3;
}
}
text.setText(lable);
num="";
}
else {if(flag==1)
{/* switch (lable)
{ case "+":number[flag++]=0;break;
case "-":number[flag++]=1;break;
case "*":number[flag++]=2;break;
case "/":number[flag++]=3;break;
}*/
if(num!="")
number[0]=trans(num);
// System.out.println("haha");
if(lable=="+")
number[flag++]=0;
else {if(lable=="-")
number[flag++]=1;
else
{ if(lable=="*")
number[flag++]=2;
else
number[flag++]=3;
}
}
text.setText(lable);
num="";
}
else
{ // System.out.println("ha");
number[flag]=trans(num);
switch(number[1])//because switch can only receive a integer;
{ case 0:number[0]+=number[2];break;
case 1:number[0]-=number[2];break;
case 2:number[0]*=number[2];break;
case 3:number[0]/=number[2];break;
}
flag=1;
text.setText(number[0].toString());
if(lable=="+")
number[flag++]=0;
else {if(lable=="-")
number[flag++]=1;
else
{ if(lable=="*")
number[flag++]=2;
else
number[flag++]=3;
}
}
num="";
}
}
}
else{ if(lable=="=")
{
if(flag==0)//press a num or press "="only
{number[flag++]=trans(num);
text.setText("="+num);
num="";
}
else {if(flag==1)//press anum and a symbol then "="
{text.setText("="+number[0].toString());num="";}
else
{ //System.out.println(number[flag]);
number[flag]=trans(num);
// System.out.println(number[flag]);
switch(number[1])
{ case 0:number[0]+=number[2];/* System.out.println("hi");System.out.println(number[2])*/;break;
case 1:number[0]-=number[2];break;
case 2:number[0]*=number[2];break;
case 3:number[0]/=number[2];break;
}
flag=1;text.setText("="+number[0].toString());
num="";
}
}
}
else
{flag=0;
text.setText(null);
num="";
}
}
}
}
public int trans(String ags)
{
int a=0;
try
{
StreamTokenizer st=new StreamTokenizer (new BufferedReader(new StringReader(ags)));
st.nextToken();
if(st.ttype==st.TT_NUMBER)
a=(int)st.nval;
else
a= 0;
}
catch(IOException e)
{ System.out.println("error");
}
return a;
}
/**
* Shutdown procedure when run as an application.
*/
protected void windowClosed() {
// TODO: Check if it is save to close the application
// Exit application.
System.exit(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -