天津户外拓展:如何用java实现计算器运算功能?用到哪些函数?原代码怎么写呀

来源:百度文库 编辑:神马品牌网 时间:2024/05/10 11:54:45
jb最好写详细点,谢谢各位了,我很笨,帮帮忙呀,

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Counter2 extends WindowAdapter
{
static JFrame f=new JFrame("¼ÆËãÆ÷");
static JTextField text1=new JTextField("0.");
static String source="";
static String cal="";
static String object="";
static boolean flag=false;
static boolean flag1=true;
static boolean flag2=false;
public void init()
{
try
{
Container c=f.getContentPane();
JPanel pan1=new JPanel();
JButton b1=new JButton("1");
JButton b2=new JButton("2");
JButton b3=new JButton("3");
JButton b4=new JButton("4");
JButton b5=new JButton("5");
JButton b6=new JButton("6");
JButton b7=new JButton("7");
JButton b8=new JButton("8");
JButton b9=new JButton("9");
JButton b0=new JButton("0");
JButton b11=new JButton("+");
JButton b12=new JButton("-");
JButton b13=new JButton("*");
JButton b14=new JButton("/");
JButton b15=new JButton(".");
JButton b16=new JButton("=");
JButton bclar=new JButton("ÇåÁã");
text1.setHorizontalAlignment(JTextField.RIGHT);
c.add(text1,"North");
c.add(pan1);
A aa=new A();
Result re=new Result();
Opertion op=new Opertion();
Clar cl=new Clar();
b1.addActionListener(aa);
b2.addActionListener(aa);
b3.addActionListener(aa);
b4.addActionListener(aa);
b5.addActionListener(aa);
b6.addActionListener(aa);
b7.addActionListener(aa);
b8.addActionListener(aa);
b9.addActionListener(aa);
b0.addActionListener(aa);
b11.addActionListener(op);
b12.addActionListener(op);
b13.addActionListener(op);
b14.addActionListener(op);
b16.addActionListener(re);
b15.addActionListener(aa);
bclar.addActionListener(cl);
pan1.add(b1);
pan1.add(b2);
pan1.add(b3);
pan1.add(b11);
pan1.add(b4);
pan1.add(b5);
pan1.add(b6);
pan1.add(b12);
pan1.add(b7);
pan1.add(b8);
pan1.add(b9);
pan1.add(b13);
pan1.add(b0);
pan1.add(b15);
pan1.add(b16);
pan1.add(b14);
pan1.add(bclar);
f.setSize(200,220);
f.setVisible(true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}

}
class A implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String a=text1.getText();
String s=e.getActionCommand();
if(a.equals("0.")||a.equals("+")||a.equals("-")||a.equals("*")||a.equals("/"))
text1.setText(s);
else {
if(flag2)
{
text1.setText(s);
flag2=false;
}
else
text1.setText(a+s);

}
}
}
class Opertion implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
cal=e.getActionCommand();
if(flag1==true)
source=text1.getText();
text1.setText(cal);
flag1=false;
flag=true;
}
}
class Result implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
double num1;
num1=Double.parseDouble(source);
object=text1.getText();
double num2;
num2=Double.parseDouble(object);
double result=0;
if(cal.equals("+"))
result=num1+num2;
if(cal.equals("-"))
result=num1-num2;
if(cal.equals("*"))
result=num1*num2;
if(cal.equals("/"))
if(num2==0)
text1.setText("³ýÊý²»ÄÜΪ0");
else
result=num1/num2;
String s1=Double.toString(result);
text1.setText(s1);
flag1=true;
flag2=true;
}
}
class Clar implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
text1.setText("0.");
}
}

public static void main(String[] args)
{
Counter2 count=new Counter2();
count.init();
}

public void windowClosing(WindowEvent e){
System.exit(1);
}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
}

public class aa
{
//操作符
double op1,op2;
String ops;
//操作函数
double exec_op() throws Exception
{
if(ops=="+"||ops.equals("+"))
return op1+op2;
if(ops=="-"||ops.equals("-"))
return op1-op2;
if(ops=="x"||ops.equals("x"))
return op1*op2;
if(((ops=="/")&&(op2!=0))||((ops.equals("/"))&&(op2!=0)))
{
return op1/op2;
}
else
{
throw new Exception();
}

}
/**功能: 验证参数
返回值: string 当返回值是ok时表示成功
参数: p1,p2,ps 分别是操作数1,2和操作符
*/
String istrue_parms(String p1,String p2,String ps)
{
try
{
this.op1=Double.parseDouble(p1);
}
catch(Exception e)
{
return "第一个参数应该是数值!\n例如:123.34";
}

try
{
this.op2=Double.parseDouble(p2);
}
catch(Exception e)
{
return "第三个参数应该是数值!\n例如:123.34";
}

if (!((ps=="+")||(ps=="-")||(ps=="x")||(ps=="/")||ps.equals("+")||ps.equals("-")||ps.equals("x")||ps.equals("/")))
{
return "第二个参数应该是(+ - x /)其中之一!";
}
else
{
ops=ps;
}
return "ok";
}

/************************************************/
public static void main(String args[])
{
if (args.length!=3)
{
System.out.print("你的输入的参数有误\n");
System.out.print("格式:aa 1 + 2\n");
System.out.print("格式:aa 1 - 2\n");
System.out.print("格式:aa 1 x 2\n");
System.out.print("格式:aa 1 / 2\n");
}
else
{
/**操作步骤
*1.得到参数并验证
String istrue_parms(String p1,String p2,String ps)
返回值是"ok"时表示成功,否则输出
*2.执行操作
*/
aa aa1=new aa();

String tmp=aa1.istrue_parms(args[0],args[2],args[1]);
if (!(tmp.equals("ok")||tmp=="ok"))
{
System.out.print(tmp);
System.exit(0);
}
else
{
try
{
System.out.print(""+args[0]+" "+args[1]+" "+args[2]+" = ");
System.out.print(aa1.exec_op());
}
catch(Exception e)
{
System.out.print("操作失败~!");
}
}

}
}

}

一派胡言,哪要用什么冒泡啊。
上面的代码好象写的不错,不过看起来不能运行。

这个很容易,算法用桟实现

算法用冒泡法实现