java科学计算源代码 Java 科学计算

急求JAVA计算器源代码

//HTML

创新互联建站从2013年成立,先为连云港等服务建站,连云港等地企业,进行企业商务咨询服务。为连云港企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

html

applet code=SZJSQ.class width=400 height=180

/applet

/html

//APPLET

import java.util.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.applet.*;

public class SZJSQ extends JApplet implements ActionListener

{

boolean i=true;

private JButton num0=new JButton("0");

private JButton num1=new JButton("1");

private JButton num2=new JButton("2");

private JButton num3=new JButton("3");

private JButton num4=new JButton("4");

private JButton num5=new JButton("5");

private JButton num6=new JButton("6");

private JButton num7=new JButton("7");

private JButton num8=new JButton("8");

private JButton num9=new JButton("9");

private JButton zuok=new JButton("(");

private JButton youk=new JButton(")");

private JButton dian=new JButton(".");

private JButton NULL=new JButton("N");

private JButton plu=new JButton("+");

private JButton min=new JButton("-");

private JButton mul=new JButton("x");

private JButton div=new JButton("/");

private JButton equ=new JButton("=");

private JButton cle=new JButton("C");//清除

private JTextField space=new JTextField(30);

public void init()

{

JPanel text=new JPanel();

text.setLayout(new FlowLayout());

text.add(space);

JPanel buttons=new JPanel();

buttons.setLayout(new GridLayout(5,4));

buttons.add(num9);

buttons.add(num8);

buttons.add(num7);

buttons.add(plu);

buttons.add(num6);

buttons.add(num5);

buttons.add(num4);

buttons.add(min);

buttons.add(num3);

buttons.add(num2);

buttons.add(num1);

buttons.add(mul);

buttons.add(num0);

buttons.add(cle);

buttons.add(equ);

buttons.add(div);

buttons.add(zuok);

buttons.add(youk);

buttons.add(dian);

buttons.add(NULL);

(num9).addActionListener(this);

(num8).addActionListener(this);

(num7).addActionListener(this);

(num6).addActionListener(this);

(num5).addActionListener(this);

(num4).addActionListener(this);

(num3).addActionListener(this);

(num2).addActionListener(this);

(num1).addActionListener(this);

(num0).addActionListener(this);

(plu).addActionListener(this);

(min).addActionListener(this);

(mul).addActionListener(this);

(div).addActionListener(this);

(equ).addActionListener(this);

(cle).addActionListener(this);

(zuok).addActionListener(this);

(youk).addActionListener(this);

(dian).addActionListener(this);

setLayout(new BorderLayout());

add("North",text);

add("South",buttons);

space.setText("0");

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==num9)

{

if(i==true)

{

space.setText("9");

i=false;

}

else space.setText(space.getText()+'9');

}

if(e.getSource()==num8)

{

if(i==true)

{

space.setText("8");

i=false;

}

else space.setText(space.getText()+'8');

}

if(e.getSource()==num7)

{

if(i==true)

{

space.setText("7");

i=false;

}

else space.setText(space.getText()+'7');

}

if(e.getSource()==num6)

{

if(i==true)

{

space.setText("6");

i=false;

}

else space.setText(space.getText()+'6');

}

if(e.getSource()==num5)

{

if(i==true)

{

space.setText("5");

i=false;

}

else space.setText(space.getText()+'5');

}

if(e.getSource()==num4)

{

if(i==true)

{

space.setText("4");

i=false;

}

else space.setText(space.getText()+'4');

}

if(e.getSource()==num3)

{

if(i==true)

{

space.setText("3");

i=false;

}

else space.setText(space.getText()+'3');

}

if(e.getSource()==num2)

{

if(i==true)

{

space.setText("2");

i=false;

}

else space.setText(space.getText()+'2');

}

if(e.getSource()==num1)

{

if(i==true)

{

space.setText("1");

i=false;

}

else space.setText(space.getText()+'1');

}

if(e.getSource()==num0)

{

if(i==true)

{

space.setText("0");

i=false;

}

else space.setText(space.getText()+'0');

}

if(e.getSource()==zuok)

{

if(i==true)

{

space.setText("(");

i=false;

}

else space.setText(space.getText()+'(');

} if(e.getSource()==youk)

{

if(i==false)

space.setText(space.getText()+')');

}

if(e.getSource()==dian)

{

if(i==false)

space.setText(space.getText()+'.');

}

if(e.getSource()==plu)

{

space.setText(space.getText()+'+');

i=false;

}

if(e.getSource()==min)

{

space.setText(space.getText()+'-');

i=false;

}

if(e.getSource()==mul)

{

space.setText(space.getText()+'*');

i=false;

}

if(e.getSource()==div)

{

space.setText(space.getText()+'/');

i=false;

}

if(e.getSource()==equ)

{

space.setText(String.valueOf(Calculator(space.getText())));

i=true;

}

if(e.getSource()==cle)

{

space.setText("0");

i=true;

}

}

public double Calculator(String f)//科学计算

{

int i=0,j=0,k;

char c;

StringBuffer s=new StringBuffer();

s.append(f);

s.append('=');

String formula=s.toString();

char[] anArray;

anArray=new char[50];

StackCharacter mystack=new StackCharacter();

while(formula.charAt(i)!='=')

{

c=formula.charAt(i);

switch(c)

{

case '(': mystack.push(new Character(c));

i++;

break;

case ')':

while(mystack.peek().charValue()!='(')

{

anArray[j++]=mystack.pop().charValue();

}

mystack.pop();

i++;

break;

case '+':

case '-':

while(!mystack.empty()mystack.peek().charValue()!='(')

{

anArray[j++]=mystack.pop().charValue();

}

mystack.push(new Character(c));

i++;

break;

case '*':

case '/':

while(!mystack.empty()(mystack.peek().charValue()=='*'||mystack.peek().charValue()=='/'))

{

anArray[j++]=mystack.pop().charValue();

}

mystack.push(new Character(c));

i++;

break;

case' ': i++;

break;

default: while((c='0'c='9')||c=='.')

{

anArray[j++]=c;

i++;

c=formula.charAt(i);

}

anArray[j++]='#';

break;

}

}

while(!(mystack.empty()))

anArray[j++]=mystack.pop().charValue();

i=0;

int count;

double a,b,d;

StackDouble mystack1 =new StackDouble();

while(ij)

{

c=anArray[i];

switch(c)

{

case '+':

a=mystack1.pop().doubleValue();

b=mystack1.pop().doubleValue();

d=b+a;

mystack1.push(new Double(d));

i++;

break;

case '-':

a=mystack1.pop().doubleValue();

b=mystack1.pop().doubleValue();

d=b-a;

mystack1.push(new Double(d));

i++;

break;

case '*':

a=mystack1.pop().doubleValue();

b=mystack1.pop().doubleValue();

d=b*a;

mystack1.push(new Double(d));

i++;

break;

case '/':

a=mystack1.pop().doubleValue();

b=mystack1.pop().doubleValue();

if(a!=0)

{

d=b/a;

mystack1.push(new Double(d));

i++;

}

else

{

System.out.println("Error!");

}

break;

default:

d=0;count=0;

while((c='0'c='9'))

{

d=10*d+c-'0';

i++;

c=anArray[i];

}

if(c=='.')

{

i++;

c=anArray[i];

while((c='0'c='9'))

{

count++;

d=d+(c-'0')/Math.pow(10,count);

i++;

c=anArray[i];

}

}

if(c=='#')

mystack1.push(new Double(d));

i++;

break;

}

}

return(mystack1.peek().doubleValue());

}

}

求一个 JAVA 的 科学计算器 的 源代码最好里面有 sin cos 倒数、平方根、平方、立方高级一点的!

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Calculator implements ActionListener

{

String s="",s1;

double d1,d2;

JFrame jf = new JFrame("小计算器by Graduate") ;

JTextField tf = new JTextField();

public void init()//实现计算器界面

{

Container c=jf.getContentPane();

tf.setHorizontalAlignment(JTextField.RIGHT);//文本框

c.add(tf,"North");

JPanel pn3 = new JPanel(new BorderLayout());

c.add(pn3,"Center");

JPanel pn2 = new JPanel();//功能键界面(清除键和关闭键)

pn2.setLayout(new BorderLayout());

JPanel pn1 = new JPanel();//运算界面

pn1.setLayout(new GridLayout(4,4));

pn3.add(pn2,"North");

pn3.add(pn1);

//设置按钮

JButton b = new JButton("CLEAR");

b.setToolTipText("请按清除键!");//设置清零键

b.setForeground(Color.RED);//设置字体颜色

b.setBackground(Color.YELLOW);//设置背景色

b.addActionListener(this);

pn2.add(b,"Center");

b = new JButton("OFF");

b.setToolTipText("请按退出键!");//设置off键,点击退出应用程序b.addActionListener(this);

b.setForeground(Color.RED);//字体颜色

b.setBackground(Color.ORANGE);//背景色

pn2.add(b,"East");

b = new JButton("1");//add butten 1

b.addActionListener(this);

pn1.add(b);

b = new JButton("2");//add butten 2

b.addActionListener(this);

pn1.add(b);

b = new JButton("3");//add butten 3

b.addActionListener(this);

pn1.add(b);

b = new JButton("+");//add butten +

b.setForeground(Color.BLUE);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

b = new JButton("4");//add butten 4

b.addActionListener(this);

pn1.add(b);

b = new JButton("5");//add butten 5

b.addActionListener(this);

pn1.add(b);

b = new JButton("6");//add button 6

b.addActionListener(this);

pn1.add(b);

b = new JButton("-");//add button -

b.setForeground(Color.BLUE);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

b = new JButton("7");//add button 7

b.addActionListener(this);

pn1.add(b);

b = new JButton("8");//add button 8

b.addActionListener(this);

pn1.add(b);

b = new JButton("9");//add button 9

b.addActionListener(this);

pn1.add(b);

b = new JButton("*");//add button *

b.setForeground(Color.BLUE);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

b = new JButton("0");//add button 0

b.addActionListener(this);

pn1.add(b);

b = new JButton(".");//add button .

b.addActionListener(this);

pn1.add(b);

b = new JButton("=");//add button =

b.setForeground(Color.RED);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

b = new JButton("\\");//add button \

b.setForeground(Color.BLUE);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

jf.setSize(300,300);//设置大小

jf.setVisible(true);//设置为可视

}

//处理按钮按下时的动作,进行相应的处理

public void actionPerformed(ActionEvent e)

{

String command = e.getActionCommand();

tf.setText(tf.getText()+command);

if(command.equals("CLEAR")) //清零键 按下时返回初始状态

{

s1=null;

s="";

tf.setText("");//记录输入值的变量清空

}

else if(command.equals("OFF")) System.exit(0);//off键 关闭应用程序

else if(!command.equals("*")!command.equals("\\")

!command.equals("+")!command.equals("-")

!command.equals("="))//判断输入是否为数字

{

if(s1==null)//判断输入是否为第一个

s1 = command;

else s1+=command;

d1 = new Double(s1).doubleValue();//字符串型转换为双精度型,还原输入数字

try

{

if(s.equals("+")) d1 = d1+d2;//加法运算

else if(s.equals("-")) d1 = d2-d1;//减法运算

else if(s.equals("*")) d1 = d1*d2;//乘法运算

else if(s.equals("\\"))d1 = d2/d1;//除法运算

}

catch(Exception ex)

{

tf.setText("Error");//错误显示"Error"

System.out.println(ex.getMessage());

}

}

else if(!command.equals("=")) //判断输入是否为+ - * \

{

s = command;

s1 = null;

d2 = d1;

}

else//输入=时,显示运算结果

{

tf.setText(tf.getText()+d1);

}

}

public static void main(String [] args)

{

new Calculator().init();

}

}

用JAVA编写的科学计算器源代码

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

class Counter 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)

{

Counter count=new Counter();

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){}

}

求JAVA标准计算器与科学计算器转换源代码

importjava.awt.*;importjava.awt.event.*;importjava.lang.*;importjavax.swing.*;publicclassCounterextendsFrame{//声明三个面板的布局GridLayoutgl1,gl2,gl3;Panelp0,p1,p2,p3;JTextFieldtf1;TextFieldtf2;Buttonb0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;StringBufferstr;//显示屏所显示的字符串doublex,y;//x和y都是运算数intz;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"staticdoublem;//记忆的数字publicCounter(){gl1=newGridLayout(1,4,10,0);//实例化三个面板的布局gl2=newGridLayout(4,1,0,15);gl3=newGridLayout(4,5,10,15);tf1=newJTextField(27);//显示屏tf1.setHorizontalAlignment(JTextField.RIGHT);tf1.setEnabled(false);tf1.setText("0");tf2=newTextField(10);//显示记忆的索引值tf2.setEditable(false);//实例化所有按钮、设置其前景色并注册监听器b0=newButton("Backspace");b0.setForeground(Color.red);b0.addActionListener(newBt());b1=newButton("CE");b1.setForeground(Color.red);b1.addActionListener(newBt());b2=newButton("C");b2.setForeground(Color.red);b2.addActionListener(newBt());b3=newButton("MC");b3.setForeground(Color.red);b3.addActionListener(newBt());b4=newButton("MR");b4.setForeground(Color.red);b4.addActionListener(newBt());b5=newButton("MS");b5.setForeground(Color.red);b5.addActionListener(newBt());b6=newButton("M+");b6.setForeground(Color.red);b6.addActionListener(newBt());b7=newButton("7");b7.setForeground(Color.blue);b7.addActionListener(newBt());b8=newButton("8");b8.setForeground(Color.blue);b8.addActionListener(newBt());b9=newButton("9");b9.setForeground(Color.blue);b9.addActionListener(newBt());b10=newButton("/");b10.setForeground(Color.red);b10.addActionListener(newBt());b11=newButton("sqrt");b11.setForeground(Color.blue);b11.addActionListener(newBt());b12=newButton("4");b12.setForeground(Color.blue);b12.addActionListener(newBt());b13=newButton("5");b13.setForeground(Color.blue);b13.addActionListener(newBt());b14=newButton("6");b14.setForeground(Color.blue);b14.addActionListener(newBt());b15=newButton("*");b15.setForeground(Color.red);b15.addActionListener(newBt());b16=newButton("%");b16.setForeground(Color.blue);b16.addActionListener(newBt());b17=newButton("1");b17.setForeground(Color.blue);b17.addActionListener(newBt());b18=newButton("2");b18.setForeground(Color.blue);b18.addActionListener(newBt());b19=newButton("3");b19.setForeground(Color.blue);b19.addActionListener(newBt());b20=newButton("-");b20.setForeground(Color.red);b20.addActionListener(newBt());b21=newButton("1/X");b21.setForeground(Color.blue);b21.addActionListener(newBt());b22=newButton("0");b22.setForeground(Color.blue);b22.addActionListener(newBt());b23=newButton("+/-");b23.setForeground(Color.blue);b23.addActionListener(newBt());b24=newButton(".");b24.setForeground(Color.blue);b24.addActionListener(newBt());b25=newButton("+");b25.setForeground(Color.red);b25.addActionListener(newBt());b26=newButton("=");b26.setForeground(Color.red);b26.addActionListener(newBt());//实例化四个面板p0=newPanel();p1=newPanel();p2=newPanel();p3=newPanel();//创建一个空字符串缓冲区str=newStringBuffer();//添加面板p0中的组件和设置其在框架中的位置和大小p0.add(tf1);p0.setBounds(10,25,300,40);//添加面板p1中的组件和设置其在框架中的位置和大小p1.setLayout(gl1);p1.add(tf2);p1.add(b0);p1.add(b1);p1.add(b2);p1.setBounds(10,65,300,25);//添加面板p2中的组件并设置其的框架中的位置和大小p2.setLayout(gl2);p2.add(b3);p2.add(b4);p2.add(b5);p2.add(b6);p2.setBounds(10,110,40,150);//添加面板p3中的组件并设置其在框架中的位置和大小p3.setLayout(gl3);//设置p3的布局p3.add(b7);p3.add(b8);p3.add(b9);p3.add(b10);p3.add(b11);p3.add(b12);p3.add(b13);p3.add(b14);p3.add(b15);p3.add(b16);p3.add(b17);p3.add(b18);p3.add(b19);p3.add(b20);p3.add(b21);p3.add(b22);p3.add(b23);p3.add(b24);p3.add(b25);p3.add(b26);p3.setBounds(60,110,250,150);//设置框架中的布局为空布局并添加4个面板setLayout(null);add(p0);add(p1);add(p2);add(p3);setResizable(false);//禁止调整框架的大小//匿名类关闭窗口addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente1){System.exit(0);}});setBackground(Color.lightGray);setBounds(100,100,320,280);setVisible(true);}//构造监听器classBtimplementsActionListener{publicvoidactionPerformed(ActionEvente2){try{if(e2.getSource()==b1)//选择"CE"清零{tf1.setText("0");//把显示屏清零str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数}elseif(e2.getSource()==b2)//选择"C"清零{tf1.setText("0");//把显示屏清零str.setLength(0);}elseif(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数{x=Double.parseDouble(tf1.getText().trim());tf1.setText(""+(-x));}elseif(e2.getSource()==b25)//单击加号按钮获得x的值和z的值并清空y的值{x=Double.parseDouble(tf1.getText().trim());str.setLength(0);//清空缓冲区以便接收新的另一个运算数y=0d;z=0;}elseif(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值{x=Double.parseDouble(tf1.getText().trim());str.setLength(0);y=0d;z=1;}elseif(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值{x=Double.parseDouble(tf1.getText().trim());str.setLength(0);y=0d;z=2;}elseif(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值{x=Double.parseDouble(tf1.getText().trim());str.setLength(0);y=0d;z=3;}elseif(e2.getSource()==b26)//单击等号按钮输出计算结果{str.setLength(0);switch(z){case0:tf1.setText(""+(x+y));break;case1:tf1.setText(""+(x-y));break;case2:tf1.setText(""+(x*y));break;case3:tf1.setText(""+(x/y));break;}}elseif(e2.getSource()==b24)//单击"."按钮输入小数{if(tf1.getText().trim().indexOf(′.′)!=-1)//判断字符串中是否已经包含了小数点{}else//如果没数点有小{if(tf1.getText().trim().equals("0"))//如果初时显示为0{str.setLength(0);tf1.setText((str.append("0"+e2.getActionCommand())).toString());}elseif(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何操作{}else{tf1.setText(str.append(e2.getActionCommand()).toString());}}y=0d;}elseif(e2.getSource()==b11)//求平方根{x=Double.parseDouble(tf1.getText().trim());tf1.setText("数字格式异常");if(x0)tf1.setText("负数没有平方根");elsetf1.setText(""+Math.sqrt(x));str.setLength(0);y=0d;}elseif(e2.getSource()==b16)//单击了"%"按钮{x=Double.parseDouble(tf1.getText().trim());tf1.setText(""+(0.01*x));str.setLength(0);y=0d;}elseif(e2.getSource()==b21)//单击了"1/X"按钮{x=Double.parseDouble(tf1.getText().trim());if(x==0){tf1.setText("除数不能为零");}else{tf1.setText(""+(1/x));}str.setLength(0);y=0d;}elseif(e2.getSource()==b3)//MC为清除内存{m=0d;tf2.setText("");str.setLength(0);}elseif(e2.getSource()==b4)//MR为重新调用存储的数据{if(tf2.getText().trim()!="")//有记忆数字{tf1.setText(""+m);}}elseif(e2.getSource()==b5)//MS为存储显示的数据{m=Double.parseDouble(tf1.getText().trim());tf2.setText("M");tf1.setText("0");str.setLength(0);}elseif(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR{m=m+Double.parseDouble(tf1.getText().trim());}else//选择的是其他的按钮{if(e2.getSource()==b22)//如果选择的是"0"这个数字键{if(tf1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作{}else{tf1.setText(str.append(e2.getActionCommand()).toString());y=Double.parseDouble(tf1.getText().trim());}}elseif(e2.getSource()==b0)//选择的是“BackSpace”按钮{if(!tf1.getText().trim().equals("0"))//如果显示屏显示的不是零{if(str.length()!=1){tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常}else{tf1.setText("0");str.setLength(0);}}y=Double.parseDouble(tf1.getText().trim());}else//其他的数字键{tf1.setText(str.append(e2.getActionCommand()).toString());y=Double.parseDouble(tf1.getText().trim());}}}catch(NumberFormatExceptione){tf1.setText("数字格式异常");}catch(StringIndexOutOfBoundsExceptione){tf1.setText("字符串索引越界");}}}publicstaticvoidmain(Stringargs[]){newCounter();}}

求一个 JAVA 的 科学计算器 的 源代码

我给你一个功能强大的计算器!已运行通过!

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Calculator3 extends JFrame implements ActionListener {

private boolean dotExist, operated, equaled; // 帮助运算的布尔变量

private double storedNumber; // 目前的结果

private char lastOperator; // 表示上一运算符

private JTextField operation; // 结果栏

private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符

private JButton[] numbers; // 数字

// 构造者

public Calculator3() {

setTitle("Calculator");

// 初始化变量

dotExist = false; // 表示当前的数是否有小数点

operated = false; // 表示任意运算符是否被按下

equaled = false; // 表示等号是否被按下

storedNumber = 0;

lastOperator = '?';

// 初始化窗口变量

operation = new JTextField("0");

operation.setEditable(false);

numbers = new JButton[10];

for (int i = 0; i 10; i++)

numbers[i] = new JButton("" + i);

dot = new JButton(".");

plus = new JButton("+");

minus = new JButton("-");

multi = new JButton("*");

div = new JButton("/");

sqrt = new JButton("√");

equal = new JButton("=");

changePN = new JButton("±");

clear = new JButton("AC");

// 将窗口物体放入窗口

GridBagLayout layout = new GridBagLayout();

getContentPane().setLayout(layout);

addComponent(layout, operation, 0, 0, 4, 1);

addComponent(layout, numbers[1], 1, 0, 1, 1);

addComponent(layout, numbers[2], 1, 1, 1, 1);

addComponent(layout, numbers[3], 1, 2, 1, 1);

addComponent(layout, numbers[4], 2, 0, 1, 1);

addComponent(layout, numbers[5], 2, 1, 1, 1);

addComponent(layout, numbers[6], 2, 2, 1, 1);

addComponent(layout, numbers[7], 3, 0, 1, 1);

addComponent(layout, numbers[8], 3, 1, 1, 1);

addComponent(layout, numbers[9], 3, 2, 1, 1);

addComponent(layout, dot, 4, 0, 1, 1);

addComponent(layout, numbers[0], 4, 1, 1, 1);

addComponent(layout, sqrt, 4, 2, 1, 1);

addComponent(layout, plus, 1, 3, 1, 1);

addComponent(layout, minus, 2, 3, 1, 1);

addComponent(layout, multi, 3, 3, 1, 1);

addComponent(layout, div, 4, 3, 1, 1);

addComponent(layout, equal, 5, 0, 2, 1);

addComponent(layout, changePN, 5, 2, 1, 1);

addComponent(layout, clear, 5, 3, 1, 1);

}

// 对按钮进行反应的方法

public void actionPerformed(ActionEvent e) {

JButton btn = (JButton) e.getSource();

if (btn == clear) {

operation.setText("0");

dotExist = false;

storedNumber = 0;

lastOperator = '?';

} else if (btn == equal) {

operate('=');

equaled = true;

} else if (btn == plus) {

operate('+');

equaled = false;

} else if (btn == minus) {

operate('-');

equaled = false;

} else if (btn == multi) {

operate('*');

equaled = false;

} else if (btn == div) {

operate('/');

equaled = false;

} else if (btn == changePN) {

operate('p');

operate('=');

equaled = true;

} else if (btn == sqrt) {

operate('s');

operate('=');

equaled = true;

} else {

if (equaled)

storedNumber = 0;

for (int i = 0; i 10; i++)

if (btn == numbers[i]) {

if (operation.getText().equals("0"))

operation.setText("" + i);

else if (!operated)

operation.setText(operation.getText() + i);

else {

operation.setText("" + i);

operated = false;

}

}

if (btn == dot !dotExist) {

operation.setText(operation.getText() + ".");

dotExist = true;

}

}

}

// 进行运算的方法

private void operate(char operator) {

double currentNumber = Double.valueOf(operation.getText())

.doubleValue();

if (lastOperator == '?')

storedNumber = currentNumber;

else if (lastOperator == '+')

storedNumber += currentNumber;

else if (lastOperator == '-')

storedNumber -= currentNumber;

else if (lastOperator == '*')

storedNumber *= currentNumber;

else if (lastOperator == '/')

storedNumber /= currentNumber;

else if (lastOperator == 'p')

storedNumber *= -1;

else if (lastOperator == 's')

storedNumber = Math.sqrt(currentNumber);

else if (lastOperator == '=' equaled)

storedNumber = currentNumber;

operation.setText("" + storedNumber);

operated = true;

lastOperator = operator;

}

// 快捷使用GridBagLayout的方法

private void addComponent(GridBagLayout layout, Component component,

int row, int col, int width, int height) {

GridBagConstraints constraints = new GridBagConstraints();

constraints.fill = GridBagConstraints.BOTH;

constraints.insets = new Insets(10, 2, 10, 2);

constraints.weightx = 100;

constraints.weighty = 100;

constraints.gridx = col;

constraints.gridy = row;

constraints.gridwidth = width;

constraints.gridheight = height;

layout.setConstraints(component, constraints);

if (component instanceof JButton)

((JButton) component).addActionListener(this);

getContentPane().add(component);

}

// 主方法初始化并显示窗口

public static void main(String[] args) {

Calculator3 calc = new Calculator3();

calc.setSize(290, 400);

calc.setVisible(true);

}

}

JAVA科学计算器代码如何编

import java.awt.*;

import java.awt.event.*;

import java.lang.*;

import javax.swing.*;

public class Counter extends Frame

{

//声明三个面板的布局

GridLayout gl1,gl2,gl3;

Panel p0,p1,p2,p3;

JTextField tf1;

TextField tf2;

Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;

StringBuffer str;//显示屏所显示的字符串

double x,y;//x和y都是运算数

int z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"

static double m;//记忆的数字

public Counter()

{

gl1=new GridLayout(1,4,10,0);//实例化三个面板的布局

gl2=new GridLayout(4,1,0,15);

gl3=new GridLayout(4,5,10,15);

tf1=new JTextField(27);//显示屏

tf1.setHorizontalAlignment(JTextField.RIGHT);

tf1.setEnabled(false);

tf1.setText("0");

tf2=new TextField(10);//显示记忆的索引值

tf2.setEditable(false);

//实例化所有按钮、设置其前景色并注册监听器

b0=new Button("Backspace");

b0.setForeground(Color.red);

b0.addActionListener(new Bt());

b1=new Button("CE");

b1.setForeground(Color.red);

b1.addActionListener(new Bt());

b2=new Button("C");

b2.setForeground(Color.red);

b2.addActionListener(new Bt());

b3=new Button("MC");

b3.setForeground(Color.red);

b3.addActionListener(new Bt());

b4=new Button("MR");

b4.setForeground(Color.red);

b4.addActionListener(new Bt());

b5=new Button("MS");

b5.setForeground(Color.red);

b5.addActionListener(new Bt());

b6=new Button("M+");

b6.setForeground(Color.red);

b6.addActionListener(new Bt());

b7=new Button("7");

b7.setForeground(Color.blue);

b7.addActionListener(new Bt());

b8=new Button("8");

b8.setForeground(Color.blue);

b8.addActionListener(new Bt());

b9=new Button("9");

b9.setForeground(Color.blue);

b9.addActionListener(new Bt());

b10=new Button("/");

b10.setForeground(Color.red);

b10.addActionListener(new Bt());

b11=new Button("sqrt");

b11.setForeground(Color.blue);

b11.addActionListener(new Bt());

b12=new Button("4");

b12.setForeground(Color.blue);

b12.addActionListener(new Bt());

b13=new Button("5");

b13.setForeground(Color.blue);

b13.addActionListener(new Bt());

b14=new Button("6");

b14.setForeground(Color.blue);

b14.addActionListener(new Bt());

b15=new Button("*");

b15.setForeground(Color.red);

b15.addActionListener(new Bt());

b16=new Button("%");

b16.setForeground(Color.blue);

b16.addActionListener(new Bt());

b17=new Button("1");

b17.setForeground(Color.blue);

b17.addActionListener(new Bt());

b18=new Button("2");

b18.setForeground(Color.blue);

b18.addActionListener(new Bt());

b19=new Button("3");

b19.setForeground(Color.blue);

b19.addActionListener(new Bt());

b20=new Button("-");

b20.setForeground(Color.red);

b20.addActionListener(new Bt());

b21=new Button("1/X");

b21.setForeground(Color.blue);

b21.addActionListener(new Bt());

b22=new Button("0");

b22.setForeground(Color.blue);

b22.addActionListener(new Bt());

b23=new Button("+/-");

b23.setForeground(Color.blue);

b23.addActionListener(new Bt());

b24=new Button(".");

b24.setForeground(Color.blue);

b24.addActionListener(new Bt());

b25=new Button("+");

b25.setForeground(Color.red);

b25.addActionListener(new Bt());

b26=new Button("=");

b26.setForeground(Color.red);

b26.addActionListener(new Bt());

//实例化四个面板

p0=new Panel();

p1=new Panel();

p2=new Panel();

p3=new Panel();

//创建一个空字符串缓冲区

str=new StringBuffer();

//添加面板p0中的组件和设置其在框架中的位置和大小

p0.add(tf1);

p0.setBounds(10,25,300,40);

//添加面板p1中的组件和设置其在框架中的位置和大小

p1.setLayout(gl1);

p1.add(tf2);

p1.add(b0);

p1.add(b1);

p1.add(b2);

p1.setBounds(10,65,300,25);

//添加面板p2中的组件并设置其的框架中的位置和大小

p2.setLayout(gl2);

p2.add(b3);

p2.add(b4);

p2.add(b5);

p2.add(b6);

p2.setBounds(10,110,40,150);

//添加面板p3中的组件并设置其在框架中的位置和大小

p3.setLayout(gl3);//设置p3的布局

p3.add(b7);

p3.add(b8);

p3.add(b9);

p3.add(b10);

p3.add(b11);

p3.add(b12);

p3.add(b13);

p3.add(b14);

p3.add(b15);

p3.add(b16);

p3.add(b17);

p3.add(b18);

p3.add(b19);

p3.add(b20);

p3.add(b21);

p3.add(b22);

p3.add(b23);

p3.add(b24);

p3.add(b25);

p3.add(b26);

p3.setBounds(60,110,250,150);

//设置框架中的布局为空布局并添加4个面板

setLayout(null);

add(p0);

add(p1);

add(p2);

add(p3);

setResizable(false);//禁止调整框架的大小

//匿名类关闭窗口

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e1)

{

System.exit(0);

}

});

setBackground(Color.lightGray);

setBounds(100,100,320,280);

setVisible(true);

}

//构造监听器

class Bt implements ActionListener

{

public void actionPerformed(ActionEvent e2)

{

try{

if(e2.getSource()==b1)//选择"CE"清零

{

tf1.setText("0");//把显示屏清零

str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数

}

else if(e2.getSource()==b2)//选择"C"清零

{

tf1.setText("0");//把显示屏清零

str.setLength(0);

}

else if(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText(""+(-x));

}

else if(e2.getSource()==b25)//单击加号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);//清空缓冲区以便接收新的另一个运算数

y=0d;

z=0;

}

else if(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=1;

}

else if(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=2;

}

else if(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=3;

}

else if(e2.getSource()==b26)//单击等号按钮输出计算结果

{

str.setLength(0);

switch(z)

{

case 0 : tf1.setText(""+(x+y));break;

case 1 : tf1.setText(""+(x-y));break;

case 2 : tf1.setText(""+(x*y));break;

case 3 : tf1.setText(""+(x/y));break;

}

}

else if(e2.getSource()==b24)//单击"."按钮输入小数

{

if(tf1.getText().trim().indexOf(′.′)!=-1)//判断字符串中是否已经包含了小数点

{

}

else//如果没数点有小

{

if(tf1.getText().trim().equals("0"))//如果初时显示为0

{

str.setLength(0);

tf1.setText((str.append("0"+e2.getActionCommand())).toString());

}

else if(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString());

}

}

y=0d;

}

else if(e2.getSource()==b11)//求平方根

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText("数字格式异常");

if(x0)

tf1.setText("负数没有平方根");

else

tf1.setText(""+Math.sqrt(x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b16)//单击了"%"按钮

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText(""+(0.01*x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b21)//单击了"1/X"按钮

{

x=Double.parseDouble(tf1.getText().trim());

if(x==0)

{

tf1.setText("除数不能为零");

}

else

{

tf1.setText(""+(1/x));

}

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b3)//MC为清除内存

{

m=0d;

tf2.setText("");

str.setLength(0);

}

else if(e2.getSource()==b4)//MR为重新调用存储的数据

{

if(tf2.getText().trim()!="")//有记忆数字

{

tf1.setText(""+m);

}

}

else if(e2.getSource()==b5)//MS为存储显示的数据

{

m=Double.parseDouble(tf1.getText().trim());

tf2.setText("M");

tf1.setText("0");

str.setLength(0);

}

else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR

{

m=m+Double.parseDouble(tf1.getText().trim());

}

else//选择的是其他的按钮

{

if(e2.getSource()==b22)//如果选择的是"0"这个数字键

{

if(tf1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString());

y=Double.parseDouble(tf1.getText().trim());

}

}

else if(e2.getSource()==b0)//选择的是“BackSpace”按钮

{

if(!tf1.getText().trim().equals("0"))//如果显示屏显示的不是零

{

if(str.length()!=1)

{

tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常

}

else

{

tf1.setText("0");

str.setLength(0);

}

}

y=Double.parseDouble(tf1.getText().trim());

}

else//其他的数字键

{

tf1.setText(str.append(e2.getActionCommand()).toString());

y=Double.parseDouble(tf1.getText().trim());

}

}

}

catch(NumberFormatException e){

tf1.setText("数字格式异常");

}

catch(StringIndexOutOfBoundsException e){

tf1.setText("字符串索引越界");

}

}

}

public static void main(String args[])

{

new Counter();

}

}


分享名称:java科学计算源代码 Java 科学计算
当前地址:http://cdiso.cn/article/hiecec.html

其他资讯