皮皮网

【淘宝源码代码】【ide怎么点开源码】【php源码获取文件链接】科学计算器源码_科学计算器源码怎么用

时间:2024-11-20 16:48:46 分类:时尚 来源:8a源码网

1.用JAVA编写的科学科学计算器源代码
2.JAVA课程设计计算器的源代码
3.如何用C语言编写一个科学计算器

科学计算器源码_科学计算器源码怎么用

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

       这个你参考一下。

       import javax.swing.*;

       //import javax.swing.event.*;

       import java.awt.*;

       import java.awt.event.*;

       //计算器显示结果的计算窗体

       class Result extends JPanel

       {

        JTextField text = new JTextField("0"); //text先是输入和结果

        Result()

        {

        text.setHorizontalAlignment(SwingConstants.RIGHT); //讲输入的数字或得到的结果在text的右边显示

        text.setEnabled(false); //文本框不能编辑

        setLayout(new BorderLayout()); //设定布局管理器边框布局

        add(text, BorderLayout.CENTER); //text放置在窗体的中间

        }

       }

       //计算器数字按钮定义面板

       class Number_Key extends JPanel

       {

        JButton zero = new JButton("0");//数字键0

        JButton one = new JButton("1");//数字键1

        JButton two = new JButton("2");//数字键2

        JButton three = new JButton("3");//数字键3

        JButton four = new JButton("4");//数字键4

        JButton five = new JButton("5");//数字键5

        JButton six = new JButton("6");//数字键6

        JButton seven = new JButton("7");//数字键7

        JButton eight = new JButton("8");//数字键8

        JButton nine = new JButton("9");//数字键9

        JButton plus = new JButton("+");

        JButton sub = new JButton("-");

        JButton mul = new JButton("*");

        JButton div = new JButton("/");

        JButton equal = new JButton("=");

        JButton ce = new JButton("ce");//置零键

        JButton point = new JButton(".");

        JButton tzero = new JButton("");

        Number_Key()

        {

        setLayout(new GridLayout(6, 3, , ));//定义布局管理器为网格布局

        //添加各个按钮键

        add(seven);

        add(eight);

        add(nine);

        add(four);

        add(five);

        add(six);

        add(one);

        add(two);

        add(three);

        add(zero);

        add(tzero);

        add(plus);

        add(sub);

        add(mul);

        add(div);

        add(point);

        add(equal);

        add(ce);

        }

       }

       //计算器主类

       class sakura extends JFrame implements ActionListener

       {

        Result result = new Result();//定义text的面板

        Number_Key number_key = new Number_Key();//定义按钮面板

        //当点击按钮+、-、器源*、码科淘宝源码代码/时,学计com = true

        boolean com = false;

        //当i=0时说明是算器ide怎么点开源码我们第一次输入,字符串sum不会累加

        int i = 0;

        //存放text的源码用内容

        String sum = "";

        //存放点击按钮+、-、科学*、计算/之前的器源数值

        double total = 0;

        //+、-、码科*、学计/的算器php源码获取文件链接代号分别为1,2,源码用3,科学4

        int symbol = 0;

        sakura()

        {

        super("Calculator");//设定标题

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序

        JPanel pane = new JPanel();//定义主面板

        pane.setLayout(new BorderLayout());

        pane.add(result,小米3+内核源码 BorderLayout.NORTH);

        pane.add(number_key, BorderLayout.SOUTH);

        number_key.one.addActionListener(this);//对1按钮添加监听事件

        number_key.two.addActionListener(this);//对2按钮添加监听事件

        number_key.three.addActionListener(this);//对3按钮添加监听事件

        number_key.four.addActionListener(this);//对4按钮添加监听事件

        number_key.five.addActionListener(this);//对5按钮添加监听事件

        number_key.six.addActionListener(this);//对6按钮添加监听事件

        number_key.seven.addActionListener(this);//对7按钮添加监听事件

        number_key.eight.addActionListener(this);//对8按钮添加监听事件

        number_key.nine.addActionListener(this);//对9按钮添加监听事件

        number_key.zero.addActionListener(this);//对0按钮添加监听事件

        number_key.ce.addActionListener(this);//对置零按钮添加监听事件

        number_key.plus.addActionListener(this);//对+按钮添加监听事件

        number_key.equal.addActionListener(this);//对=按钮添加监听事件

        number_key.sub.addActionListener(this);//对-按钮添加监听事件

        number_key.mul.addActionListener(this);//对*按钮添加监听事件

        number_key.div.addActionListener(this);//对/按钮添加监听事件

        number_key.tzero.addActionListener(this);//对按钮添加监听事件

        number_key.point.addActionListener(this);//对.按钮添加监听事件

        setContentPane(pane);

        pack();//初始化窗体大小为正好盛放所有按钮

        }

        //各个按钮触发的事件

        public void actionPerformed(ActionEvent e) {

        /*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、tomcat+源码+响应头=,如果是那么com=true

        * 如果没有com= false;或者是否点击数字键,如果是i = 1,如果没有 i = 0;

        **/

        if (e.getSource() == number_key.one)

        {

        if (com || i == 0)

        {

        result.text.setText("1");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "1");

        }

        }

        else if (e.getSource() == number_key.two)

        {

        if (com || i == 0)

        {

        result.text.setText("2");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "2");

        }

        }

        else if (e.getSource() == number_key.three)

        {

        if (com || i == 0)

        {

        result.text.setText("3");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "3");

        }

        }

        else if (e.getSource() == number_key.four)

        {

        if (com || i == 0)

        {

        result.text.setText("4");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "4");

        }

        }

        else if (e.getSource() == number_key.five)

        {

        if (com || i == 0)

        {

        result.text.setText("5");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "5");

        }

        }

        else if (e.getSource() == number_key.six)

        {

        if (com || i == 0)

        {

        result.text.setText("6");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "6");

        }

        }

        else if (e.getSource() == number_key.seven)

        {

        if (com || i == 0)

        {

        result.text.setText("7");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "7");

        }

        }

        else if (e.getSource() == number_key.eight)

        {

        if (com || i == 0)

        {

        result.text.setText("8");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "8");

        }

        }

        else if (e.getSource() == number_key.nine)

        {

        if (com || i == 0)

        {

        result.text.setText("9");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        result.text.setText(sum + "9");

        }

        }

        /*对于0这个按钮有一定的说法,在我的程序里不会出现如这样的情况,我加了判断条件就是

        * 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添

        * 加0;否则保持原来的数值不变

        */

        else if (e.getSource() == number_key.zero)

        {

        if (com || i == 0)

        {

        result.text.setText("0");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        if (Float.parseFloat(sum) > 0 || Float.parseFloat(sum) < 0)

        {

        result.text.setText(sum + "0");

        }

        else

        {

        if (sum.trim().indexOf(".") == -1)

        {

        result.text.setText(sum);

        }

        else

        {

        result.text.setText(sum + "0");

        }

        }

        }

        }

        else if (e.getSource() == number_key.ce)

        {

        result.text.setText("0");

        i = 0;

        com = true;

        }

        else if (e.getSource() == number_key.tzero)

        {

        if (com || i == 0)

        {

        result.text.setText("0");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        if (Float.parseFloat(sum) > 0 || Float.parseFloat(sum) < 0)

        {

        result.text.setText(sum + "");

        }

        else

        {

        if (sum.trim().indexOf(".") == -1)

        {

        result.text.setText(sum);

        }

        else

        {

        result.text.setText(sum + "");

        }

        }

        }

        }

        /*本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加,

        * 不存在就添加.

        */

        else if (e.getSource() == number_key.point)

        {

        if (com || i == 0)

        {

        result.text.setText("0.");

        com = false;

        i = 1;

        }

        else

        {

        sum = result.text.getText();

        if (sum.trim().indexOf(".") == -1)

        {

        result.text.setText(sum + ".");

        }

        else

        {

        result.text.setText(sum);

        }

        }

        }

        //获得点击+之前的数值

        else if (e.getSource() == number_key.plus)

        {

        com = true;

        i = 0;

        total = Double.parseDouble(result.text.getText());

        symbol = 1;

        }//获得点击-之前的数值

        else if (e.getSource() == number_key.sub)

        {

        com = true;

        i = 0;

        total = Double.parseDouble(result.text.getText());

        symbol = 2;

        }//获得点击*之前的数值

        else if (e.getSource() == number_key.mul)

        {

        com = true;

        i = 0;

        total = Double.parseDouble(result.text.getText());

        System.out.println(total);

        symbol = 3;

        }//获得点击/之前的数值

        else if (e.getSource() == number_key.div)

        {

        com = true;

        i = 0;

        total = Double.parseDouble(result.text.getText());

        symbol = 4;

        }

        else if (e.getSource() == number_key.equal)

        {

        switch (symbol)

        {

        case 1 ://计算加法

        {

        double ad =

        total + Double.parseDouble(result.text.getText());

        result.text.setText(ad + "");

        i = 0;

        sum = "";

        break;

        }

        case 2 ://计算减法

        {

        double ad =

        total - Double.parseDouble(result.text.getText());

        result.text.setText(String.valueOf(ad));

        i = 0;

        sum = "";

        break;

        }

        case 3 ://计算乘法

        {

        double ad =

        total * Double.parseDouble(result.text.getText());

        result.text.setText(ad + "");

        i = 0;

        sum = "";

        break;

        }

        case 4 ://计算除法

        {

        double ad =

        total / Double.parseDouble(result.text.getText());

        result.text.setText(ad + "");

        i = 0;

        sum = "";

        break;

        }

        }

        System.out.println(com);

        }

        }

        public static void main(String[] args)

        {

        sakura ww = new sakura();

        ww.setVisible(true) ;

        }

       }

JAVA课程设计计算器的源代码

       比较完整的Java计算器

       import javax.swing.*;

       import javax.swing.event.*;

       import java.awt.*;

       import java.awt.event.*;

       public class calculator extends JFrame implements ActionListener

       { //这里我把JFrame写成Frame,这个错误找了好久

        JFrame frame;

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

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

        private JButton cheng=new JButton("*");

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

        private JButton qiuyi=new JButton("%");

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

        private JButton fu=new JButton("+/-");

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

        private JButton kai=new JButton("sqrt");

        private JButton diao=new JButton("1/x");

        private JButton aa=new JButton("A");

        private JButton bb=new JButton("B");

        private JButton cc=new JButton("C");

        private JButton dd=new JButton("D");

        private JButton ee=new JButton("E");

        private JButton ff=new JButton("F");

        private TextField k1=new TextField();

        private objConversion convert = new objConversion();

        JMenuItem copy,paste,s,t,help,about,me;

        JRadioButton sixteen,ten,eight,two;

        JButton backspace,ce,c,num0,num1,num2,num3,num4,num5,num6,num7,num8,num9;

        Container cp;

        JTextField text;

        String copycontent="";

        boolean clickable=true,clear=true;

        int all=0;

        double qian;

        String fuhao;

        int jin=,first=1;

       public calculator()

        {

        setTitle("计算器-杨彩制作");

        setSize(,);

        setLocation(,);

        text=new JTextField();

        // text.setEnabled(false);

        text.setText("0.");

        text.setHorizontalAlignment(JTextField.RIGHT);//从右到左

       JPanel cp1=new JPanel();

        JPanel cp2=new JPanel();

        JPanel cp3=new JPanel();

       cp=getContentPane();

        cp.add(cp1,"North");

        cp.add(cp2,"Center");

        cp.add(cp3,"South");

        cp1.setLayout(new GridLayout(1,6));

        cp2.setLayout(new GridLayout(2,4));

        cp3.setLayout(new GridLayout(6,6));

        sixteen=new JRadioButton("十六进制");

        sixteen.setVisible(false);

        ten=new JRadioButton("十进制",true);

        ten.setVisible(false);

        eight=new JRadioButton("八进制");

        eight.setVisible(false);

        two=new JRadioButton("二进制");

        two.setVisible(false);

        sixteen.addActionListener(this);

        ten.addActionListener(this);

        eight.addActionListener(this);

        two.addActionListener(this);

        ButtonGroup btg=new ButtonGroup();

        btg.add(sixteen);

        btg.add(ten);

        btg.add(eight);

        btg.add(two);

        JTextField t3=new JTextField();

        cp1.add(text);

        // text.setEnabled(false);

        text.setEditable(false);

        text.setBackground(new Color(, , ));

        cp2.add(sixteen);

        cp2.add(ten);

        cp2.add(eight);

        cp2.add(two);

        backspace=new JButton("Backspace");

        backspace.setForeground(new Color(,0,0));

        backspace.addActionListener(this);

        ce=new JButton("CE");

        ce.setForeground(new Color(,0,0));

        ce.addActionListener(this);

        c=new JButton("C");

        c.setForeground(new Color(,0,0));

        c.addActionListener(this);

        k1.setVisible(false);

        cp2.add(k1);

        cp2.add(backspace);

        cp2.add(ce);

        cp2.add(c);

       num0=new JButton("0");

        num1=new JButton("1");

        num2=new JButton("2");

        num3=new JButton("3");

        num4=new JButton("4");

        num5=new JButton("5");

        num6=new JButton("6");

        num7=new JButton("7");

        num8=new JButton("8");

        num9=new JButton("9");

       cp3.add(num7);

        num7.addActionListener(this);

        cp3.add(num8);

        num8.addActionListener(this);

        cp3.add(num9);

        num9.addActionListener(this);

        cp3.add(chu);

        chu.setForeground(new Color(,0,0));

        chu.addActionListener(this);

        cp3.add(kai);

        kai.addActionListener(this);

        cp3.add(num4);

        num4.addActionListener(this);

        cp3.add(num5);

        num5.addActionListener(this);

        cp3.add(num6);

        num6.addActionListener(this);

        cp3.add(cheng);

        cheng.setForeground(new Color(,0,0));

        cheng.addActionListener(this);

        cp3.add(qiuyi);

        qiuyi.addActionListener(this);

        cp3.add(num1);

        num1.addActionListener(this);

        cp3.add(num2);

        num2.addActionListener(this);

        cp3.add(num3);

        num3.addActionListener(this);

        cp3.add(jian);

        jian.setForeground(new Color(,0,0));

        jian.addActionListener(this);

        cp3.add(diao);

        diao.addActionListener(this);

        cp3.add(num0);

        num0.addActionListener(this);

        cp3.add(fu);

        fu.addActionListener(this);

        cp3.add(dian);

        dian.addActionListener(this);

        cp3.add(jia);

        jia.setForeground(new Color(,0,0));

        jia.addActionListener(this);

        cp3.add(deng);

        deng.setForeground(new Color(,0,0));

        deng.addActionListener(this);

        cp3.add(aa);

        aa.addActionListener(this);

        cp3.add(bb);

        bb.addActionListener(this);

        cp3.add(cc);

        cc.addActionListener(this);

        cp3.add(dd);

        dd.addActionListener(this);

        cp3.add(ee);

        ee.addActionListener(this);

        cp3.add(ff);

        ff.addActionListener(this);

        aa.setVisible(false);

        bb.setVisible(false);

        cc.setVisible(false);

        dd.setVisible(false);

        ee.setVisible(false);

        ff.setVisible(false);

       JMenuBar mainMenu = new JMenuBar();

        setJMenuBar(mainMenu);

        JMenu editMenu = new JMenu("编辑");

        JMenu viewMenu = new JMenu("查看");

        JMenu helpMenu = new JMenu("帮助");

        mainMenu.add(editMenu);

        mainMenu.add(viewMenu);

        mainMenu.add(helpMenu);

        copy = new JMenuItem(" 复制");

        paste = new JMenuItem(" 粘贴");

        KeyStroke copyks=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);

        copy.setAccelerator(copyks);//设置退出菜单选项加上快捷键

        KeyStroke pasteks=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);

        paste.setAccelerator(pasteks);//设置退出菜单选项加上快捷键

        editMenu.add(copy);

        editMenu.add(paste);

        copy.addActionListener(this);

        paste.addActionListener(this);

        t = new JMenuItem("●标准型");

        s = new JMenuItem(" 科学型");

        viewMenu.add(t);

        viewMenu.add(s);

        t.addActionListener(this);

        s.addActionListener(this);

        help = new JMenuItem(" 帮助主题");

        about = new JMenuItem(" 关于计算器");

        me = new JMenuItem(" 作者主页");

        helpMenu.add(help);

        helpMenu.add(about);

        helpMenu.add(me);

        help.addActionListener(this);

        about.addActionListener(this);

        me.addActionListener(this);

       addWindowListener(new WindowDestroyer());//结束窗口

        }

       public void actionPerformed(ActionEvent e)

        { //响应动作代码

        if(first==1)

        text.setText("");

        first=0;//第一次把文本框0.清空

        Object temp = e.getSource();

        if(temp==copy)

        {

        copycontent = text.getText();

        }

        if(temp==paste)

        {

        text.setText(text.getText()+copycontent);

        }

        if(temp==t)

        { //标准

        sixteen.setVisible(false);

        ten.setVisible(false);

        eight.setVisible(false);

        two.setVisible(false);

        t.setText("●标准型");

        s.setText(" 科学型");

        aa.setVisible(false);

        bb.setVisible(false);

        cc.setVisible(false);

        dd.setVisible(false);

        ee.setVisible(false);

        ff.setVisible(false);

        }

        if(temp==s)

        { //科学

        sixteen.setVisible(true);

        ten.setVisible(true);

        eight.setVisible(true);

        two.setVisible(true);

        t.setText(" 标准型");

        s.setText("●科学型");

        aa.setVisible(true);

        bb.setVisible(true);

        cc.setVisible(true);

        dd.setVisible(true);

        ee.setVisible(true);

        ff.setVisible(true);

        aa.setEnabled(false);

        bb.setEnabled(false);

        cc.setEnabled(false);

        dd.setEnabled(false);

        ee.setEnabled(false);

        ff.setEnabled(false);

       }

        if(temp==help)

        { //打开系统帮助文件 要查资料

        try

        {

        String filePath = "C:/WINDOWS/Help/calc.chm";

        Runtime.getRuntime().exec("cmd.exe /c "+filePath);

       }

        catch(Exception eeee)

        {

        System.out.println("打开系统的计算器出错");

        }

        }

        if(temp==about)

        {

        JOptionPane.showMessageDialog(frame," Java计算器\n 杨彩 制作\n\n /m/yangcai","关于计算器",JOptionPane.INFORMATION_MESSAGE); ;

        }

        if(temp==me)

        {

        try

        {

        Process p = Runtime.getRuntime().exec("explorer /m/yangcai");

        }

        catch(Exception eeee)

        {

        System.out.println("打开指定网页出错");

        }

        }

       try

        {

        if(temp==sixteen)

        {

        String hex=text.getText();

        int inthex=Integer.parseInt(hex,jin);//先把数变为进制

        text.setText(convert.decHex(inthex)) ;

        jin=;

        aa.setEnabled(true);

        bb.setEnabled(true);

        cc.setEnabled(true);

        dd.setEnabled(true);

        ee.setEnabled(true);

        ff.setEnabled(true);

        num2.setEnabled(true);

        num3.setEnabled(true);

        num4.setEnabled(true);

        num5.setEnabled(true);

        num6.setEnabled(true);

        num7.setEnabled(true);

        num8.setEnabled(true);

        num9.setEnabled(true);

        }

        if(temp==eight)

        {

        String oct =text.getText();

        int intoct=Integer.parseInt(oct,jin);

        text.setText(convert.decOct(intoct)) ;

        jin=8;

        aa.setEnabled(false);

        bb.setEnabled(false);

        cc.setEnabled(false);

        dd.setEnabled(false);

        ee.setEnabled(false);

        ff.setEnabled(false);

        num2.setEnabled(true);

        num3.setEnabled(true);

        num4.setEnabled(true);

        num5.setEnabled(true);

        num6.setEnabled(true);

        num7.setEnabled(true);

        num8.setEnabled(false);

        num9.setEnabled(false);

        }

        if(temp==two)

        {

        String bin=text.getText();

        int intbin=Integer.parseInt(bin,jin);

        text.setText(convert.decBin(intbin));

        jin=2;

        aa.setEnabled(false);

        bb.setEnabled(false);

        cc.setEnabled(false);

        dd.setEnabled(false);

        ee.setEnabled(false);

        ff.setEnabled(false);

        num2.setEnabled(false);

        num3.setEnabled(false);

        num4.setEnabled(false);

        num5.setEnabled(false);

        num6.setEnabled(false);

        num7.setEnabled(false);

        num8.setEnabled(false);

        num9.setEnabled(false);

        }

        if(temp==ten)

        {

        String dec=text.getText();

        int intdec=Integer.parseInt(dec,jin);

        // text.setText(convert.decDec(intdec)); //本句会把变成

        text.setText(intdec+"");

        jin=;

        aa.setEnabled(false);

        bb.setEnabled(false);

        cc.setEnabled(false);

        dd.setEnabled(false);

        ee.setEnabled(false);

        ff.setEnabled(false);

        num2.setEnabled(true);

        num3.setEnabled(true);

        num4.setEnabled(true);

        num5.setEnabled(true);

        num6.setEnabled(true);

        num7.setEnabled(true);

        num8.setEnabled(true);

        num9.setEnabled(true);

        }

        }

        catch(Exception ee)

        {

        System.out.println("转换出错,可能你没有输入任何字符");

        text.setText("转换出错");

        clear=false;

        }

        if(temp==backspace)

        { //退格

        String s = text.getText();

        text.setText("");

        for (int i = 0; i < s.length() - 1; i++)

        {

        char a = s.charAt(i);

        text.setText(text.getText() + a);

        }

        }

        if (temp==ce)

        {

        text.setText("0.");

        clear=true;

        first=1;

        }

        if (temp==c)

        {

        text.setText("0."); ;

        clear=true;

        first=1;

        }

        if(temp==num0)

        {

        if(clear==false)//判断是否点击了符号位

        text.setText("");

        text.setText(text.getText()+"0");

        }

        if(temp==num1)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"1");

        clear=true;//第二次不在清空(前二句)

        }

        if(temp==num2)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"2");

        clear=true;

        }

        if(temp==num3)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"3");

        clear=true;

        }

        if(temp==num4)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"4");

        clear=true;

        }

        if(temp==num5)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"5");

        clear=true;

        }

        if(temp==num6)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"6");

        clear=true;

        }

        if(temp==num7)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"7");

        clear=true;

        }

        if(temp==num8)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"8");

        clear=true;

        }

        if(temp==num9)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"9");

        clear=true;

        }

        if(temp==aa)

        {

        text.setText(text.getText()+"A");

        }

        if(temp==bb)

        {

        text.setText(text.getText()+"B");

        }

        if(temp==cc)

        {

        text.setText(text.getText()+"C");

        }

        if(temp==dd)

        {

        text.setText(text.getText()+"D");

        }

        if(temp==ee)

        {

        text.setText(text.getText()+"E");

        }

        if(temp==ff)

        {

        text.setText(text.getText()+"F");

        }

        if(temp==dian)

        {

        clickable=true;

        for (int i = 0; i < text.getText().length(); i++)

        if ('.' == text.getText().charAt(i))

        {

        clickable=false;

        break;

        } //第一层判断是否里面含有小数点;

        if(clickable==true)//第二坛判断

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

        }

        try

        {

        if(temp==jia)

        { //加法

        qian=Double.parseDouble(text.getText());

        fuhao="+";

        clear=false;

        }

        if(temp==jian)

        {

        qian=Double.parseDouble(text.getText());

        fuhao="-";

        clear=false;

        ;

        }

        if(temp==cheng)

        {

        qian=Double.parseDouble(text.getText());

        fuhao="*";

        clear=false;

        }

        if(temp==chu)

        {

        qian=Double.parseDouble(text.getText());

        fuhao="/";

        clear=false;

        }

        if(temp==deng)

        {

        double ss=Double.parseDouble(text.getText());

        text.setText("");

        if(fuhao=="+")

        text.setText(qian+ss+"");

        if(fuhao=="-")

        text.setText(qian-ss+"");

        if(fuhao=="*")

        text.setText(qian*ss+"");

        if(fuhao=="/")

        text.setText(qian/ss+"");

        clear=false;//要清空前一次的数据

        ;

        }

        if(temp==kai)

        {

        String s = text.getText();

        if (s.charAt(0) == '-')

        {

        text.setText("负数不能开根号");

        }

        else

        text.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(text.getText()))));

        clear=false;

        }

        if(temp==diao)

        {

        if (text.getText().charAt(0) == '0'&&text.getText().length() == 1)

        {

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

        }

        else

        {

        boolean isDec = true;

        int i, j, k;

        String s = Double.toString(1 / Double.parseDouble(text.getText()));

        for (i = 0; i < s.length(); i++)

        if (s.charAt(i) == '.')

        break;

        for (j = i + 1; j < s.length(); j++)

        if (s.charAt(j) != '0')

        {

        isDec = false;

        break;

        }

        if (isDec == true)

        {

        String stemp = "";

        for (k = 0; k < i; k++)

        stemp += s.charAt(k);

        text.setText(stemp);

        }

        else

        text.setText(s);

        }

        clear=false;

        }

        if(temp==qiuyi)

        {

        text.setText("0");

        clear=false;

        }

        if (temp == fu)

        { //导师,此方法参考书中例子

        boolean isNumber = true;

        String s = text.getText();

        for (int i = 0; i < s.length(); i++)

        if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' ||

        s.charAt(i) == '-'))

        {

        isNumber = false;

        break;

        }

        if (isNumber == true)

        {

        //如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉

        if (s.charAt(0) == '-')

        {

        text.setText("");

        for (int i = 1; i < s.length(); i++)

        {

        char a = s.charAt(i);

        text.setText(text.getText() + a);

        }

        }

        //如果当前字符串第一个字符不是符号,则添加一个符号在首字母处

        else

        text.setText('-' + s);

        }

        }

        }

        catch(Exception eee)

        {

        System.out.println("运算时,首先输入数字或字符");

        text.setText("运算出错");

        clear=false;

        }

       }

       class WindowDestroyer extends WindowAdapter

        { //退出窗口动作

        public void windowClosing(WindowEvent e)

        {

        System.exit(0);

        }

        }

       class objConversion

       { //导师,本进制类参考了CSMD类转换例子

        public void objConversion ()

        {

        }

        public String decDec (int decNum)

        { //

        String strDecNum = Integer.toString(decNum);

        for (int i = strDecNum.length(); i < 3; i++)

        {

        strDecNum = "0" + strDecNum;

        }

        // return strDecNum;

        return invert (strDecNum, 5);

        }

        public String decHex (int decNum)

        { // to

        String strHexNum = "";

        int currentNum = 0;

        while (decNum != 0)

        {

        if (decNum > )

        {

        currentNum = decNum % ;

        decNum /= ;

        }

        else

        {

        currentNum = decNum;

        decNum = 0;

        }

        switch (currentNum)

        {

        case : strHexNum += "F";

        break;

        case : strHexNum += "E";

        break;

        case : strHexNum += "D";

        break;

        case : strHexNum += "C";

        break;

        case : strHexNum += "B";

        break;

        case : strHexNum += "A";

        break;

        default: strHexNum += Integer.toString(currentNum);

        break;

        }

        }

        return invert (strHexNum, 2);

        }

        public String decOct (int decNum)

        { // to 8

        String strOctNum = "";

        while (decNum != 0)

        {

        if (decNum > 7)

        {

        strOctNum += Integer.toString(decNum % 8);

        decNum /= 8;

        }

        else

        {

        strOctNum += Integer.toString(decNum);

        decNum = 0;

        }

        }

        return invert (strOctNum, 3);

        }

        public String decBin (int decNum)

        { // to 2

        String strBinNum = "";

        while (decNum != 0)

        {

        if (decNum > 1)

        {

        strBinNum += Integer.toString(decNum % 2);

        decNum /= 2;

        }

        else

        {

        strBinNum += Integer.toString(decNum);

        decNum = 0;

        }

        }

        return invert (strBinNum, 8);

        }

        private String invert (String strNum, int minLength) //转换长度

        {

        String answer = "";

        int length = strNum.length();

        if (length < minLength)

        {

        for (int padding = (minLength - length); padding > 0; padding--)

        {

        answer += "0";

        }

        }

        for (int i = length; i > 0; i--)

        {

        answer += strNum.charAt (i - 1);

        }

        return answer;

        }

       }

       public static void main(String arg[])//产生窗口

        {

        calculator win = new calculator();

        win.setVisible(true);

        }

       }

如何用C语言编写一个科学计算器

       ç”¨æ ˆ 就可以办到了。。。这个很详细的, lz 随便输入一个表达式,中间的计算过程全部输出了,lz试两个 就知道怎么回事了。 #include <stdio.h>

       #include <stdlib.h>

       #include <string.h>

       #define MAXSIZE ;

       typedef struct

       {

        char data[];

        int top;//头地址

        int base;//基地址

        int length;//长度

       }Stack;

       void init(Stack *st)//初始化栈

       {

        st->base=0;

        st->top=0;

        st->length=0;

       }

       int isEmpty(Stack *st)

       {

        int n=0,top,base;

        top =st->top;

        base =st->base;

        if(top==base)

        {

        return 1;

        }

        return n;

       }

       int isFull(Stack *st)

       {

        int n=0,top,base;

        top =st->top;

        if(top>=)

        {

        return 1;

        }

        return n;

       }

       char getTop(Stack *st)// 返回top值,不改变栈的结构

       {

        char n;

        if(isEmpty(st))

        {

        printf("栈为空\n");

        return 0;

        }

        int positon= st->top-1;

        n= st->data[positon];//取出数据;

        return n;

       }

       char pop(Stack *st)// 出栈,返回

       {

        char n;

        if(isEmpty(st))

        {

        printf("栈为空\n");

        return 0;

        }

        int positon= st->top-1;

        n= st->data[positon];//取出数据;

       st->top--;

        st->length--;

        st->data[positon]='\0';//消除数据

        return n;

       }

       void push(char n,Stack *st)//入栈

       {

        int positon ;

        if(isFull(st))

        {

        printf("栈满\n");

        }

        else

        {

        positon= st->top;//获取位置

       st->data[positon]=n;//存入数据

       st->top++;//改变位置

        }

       }

       void show(Stack *m1)//输出栈中的数据

       {

        int top,base;

        top=m1->top;

        base=m1->base;

        while(top>base)

        {

        printf("%c,",m1->data[--top]);

        }

        printf("\n");

       }

       int isOperate(char temp)//是否是操作符

       {

        if(temp=='+'||temp=='-'||temp=='*'||temp=='/'||temp=='('||temp==')'||temp=='#')

        {

        return 1;

        }

        return 0;

       }

       int isValue(char temp)//是否是数值

       {

        if(temp>='0'&&temp<='9')//

        {

        return 1;

        }

        else

        {

        return 0;

        }

       }

       int isAvail(char temp)//是否有效字符

       {

        if(isOperate(temp)||isValue(temp))//如果temp既不是操作符和数值的话,则它是非法的

        {

        return 1;

        }

        return 0;

       }

       int detect(char temp)//搜索矩阵位置

       {

        int i=0;

        char oper[7]={ '+','-','*','/','(',')','#'};

        for(i=0;i<7;i++)

        {

        if(temp==oper[i])

        {

        return i;

        }

        }

       }

       char Priority(char temp,char optr)//判断优先级

       {

        /**//

*

        + - * / ( ) #

        1 2 3 4 5 6 7

        + 1 < < < < > > >

        - 2 < < < < > > >

        * 3 > > < < > > >

        / 4 > > < < > > >

        ( 5 > > > > > = 0

        ) 6 < < < < = 0 >

        # 7 < < < < > 0 =

        */

        int row ,col;

        char priority[7][7]={ /**//* + - * / ( ) # */

        { '<','<','<','<','>','>','>'},

        { '<','<','<','<','>','>','>'},

        { '>','>','<','<','>','>','>'},

        { '>','>','<','<','>','>','>'},

        { '>','>','>','>','>','=','>'},

        { '<','<','<','<','=','0','>'},

        { '<','<','<','<','>','<','='},

        };

       row = detect(temp);//找出对应的矩阵下标;

        col = detect(optr);

       // printf("%d,%d",row,col);

       //优先级存储在一个7x7的矩阵中,对应关系上图;

       return priority[row][col];

       }

       char evaluate(int a,int b,char oper)

       {

        switch(oper)

        {

        case '+': return a+b+'0';

        case '-': return a-b+'0';

        case '*': return a*b+'0';

        case '/': return a/b+'0';

        default : return 0+'0';

        }

       }

       int calculateExpress(char *express)//计算表达式

       {

        int result=0;

        int a,b;

        // char oper,result;

       Stack OPTR,OPND;//OPTR存储操作符,OPND操作数值

        init(&OPTR);

        init(&OPND);

        push('#',&OPTR);//默认第一个位'#'

       ////////////////////-算法-////////////////////////////

        while(*express!='\0')

        {

        char temp;

        temp= *(express);

        printf("---------------------------------\n");

        printf("当前的符号为%c\n",temp);

        if(isAvail(temp))//是否是有效字符

        {

        if(isOperate(temp) )//输入的是操作符

        {

        char oper,result;

        char optr = getTop(&OPTR);//栈中top位的操作符

        printf("栈顶操作符位:%c\n",optr);

        char prior = Priority(temp,optr);//判断优先级

        switch(prior)

        {

        case '>':

        push(temp,&OPTR);

        printf("将符号位%c入栈\n",temp);

        express++;

        break;

        case '<':

        //int a,b;

       //char oper,result;

       a=pop(&OPND)-'0';//存在栈中的都是char字符

        b=pop(&OPND)-'0';

        oper=pop(&OPTR);

        result=evaluate(b,a,oper);//出栈一个操作符,计算结果

        //printf("%d",result-'0');

        push(result,&OPND);//结果入OPND

        printf("%d%c%d结果为:%d\n",b,oper,a,result-'0');

        break;

        case '=':

        //消除括号

        pop(&OPTR);

        printf("消除括号\n");

        express++;

        break;

        }

        }

        if(isValue(temp))//输入的是数值

        {

        push(temp,&OPND);//将数值位入栈;

        express++;

        printf("将数值%c压入栈\n",temp);

        //show(&OPND);

        }

        }

        else //表达式中有非法字符

        {

        printf("表达式中有非法字符\n");

        exit(-1);//退出程序

        }

       }

       // show(&OPND);

       // show(&OPTR);

        return getTop(&OPND)-'0';

       }

       void inputExpress(char *express)//输入表达式

       {

        int length=0;

        printf("请输入一个表达式:");

        scanf("%s",express);

        int len =strlen(express);

        express[len]='#';//表达式最后一位默认为'#';

        express[len+1]='\0';

       }

       void output(char *express,int result)//输出表达式

       {

        int i=0;

        printf("----------------------------------------\n表达式:");

        while(express[i]!='#')

        {

        printf("%c",express[i]);

        i++;

        }

        printf("=%d\n",result);

       }

       int main()

       {

        char express[];//表达式

        int result =0;

        inputExpress(express);//输入表达式

       result = calculateExpress(express);//计算表达式;

       output(express,result); //输出表达式

       //、、、、、、、、、、、、、测试优先级。

        /**//

*

        char m='7' ;

        m=Priority('+','*');

        printf("优先级为%c",m);

        int m=evaluate(5,6,'m');

        printf("%d",m);

        */

        return 0;

       }

copyright © 2016 powered by 皮皮网   sitemap