用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

计算器

2018-04-11 作者: 云代码会员举报

[java]代码库

package day_01;
 
import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Container; 
import java.awt.Font; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Stack; 
   
import javax.swing.JApplet; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
   
public class Jsq extends JApplet implements ActionListener 
{  
     public static void main(String[] args) 
        
            JFrame frame = new JFrame("Jisuan"); 
            Jsq applet = new Jsq(); 
            frame.getContentPane().add(applet, BorderLayout.CENTER); 
            applet.init();//applet的init方法 
            applet.start();//线程开始 
            frame.setSize(350, 400);//设置窗口大小 
            frame.setVisible(true);//设置窗口可见 
        
    private static final long serialVersionUID = 1L; 
    private JTextField textField = new JTextField("请输入"); 
    String operator = "";//操作 
    String input = "";//输入的 式子 
    boolean flag =  true
//  boolean flag1 = true; 
//  boolean flag2 = true; 
    public void init()//覆写Applet里边的init方法 
    
        Container C = getContentPane(); 
        JButton b[] = new JButton[16]; 
        JPanel panel = new JPanel(); 
        C.add(textField, BorderLayout.NORTH); 
        C.add(panel,BorderLayout.CENTER); 
        panel.setLayout(new GridLayout(4, 4,5,5)); 
        String name[]={"7","8","9","+","4","5","6","-","1","2","3","*","0","C","=","/"};//设置 按钮 
        for(int i=0;i<16;i++)//添加按钮 
        
            b[i] = new JButton(name[i]); 
            b[i].setBackground(new Color(192,192,192)); 
            b[i].setForeground(Color.BLUE);//数字键 设置为 蓝颜色 
            if(i%4==3
                b[i].setForeground(Color.RED); 
            b[i].setFont(new Font("宋体",Font.PLAIN,16));//设置字体格式 
            panel.add(b[i]); 
            b[i].addActionListener(this); 
        
        b[13].setForeground(Color.RED);//非数字键,即运算键设置为红颜色 
        b[13].setForeground(Color.RED); 
    
    public void actionPerformed(ActionEvent e)  
    
        int cnt = 0
        String actionCommand = e.getActionCommand(); 
        if(actionCommand.equals("+")||actionCommand.equals("-")||actionCommand.equals("*") ||actionCommand.equals("/")) 
            input +=" "+actionCommand+" ";//设置输入,把输入的样式改成 需要的样子 
        else if(actionCommand.equals("C")) 
            input = ""
        else if(actionCommand.equals("="))//当监听到等号时,则处理 input 
        
            input+= "="+compute(input); 
            textField.setText(input); 
            input=""
            cnt = 1
        
        else 
            input += actionCommand;//数字为了避免多位数的输入 不需要加空格 
        if(cnt==0
        textField.setText(input); 
    
    private String compute(String input)//即1237 的 样例 
    
        String str[]; 
        str = input.split(" "); 
        Stack<Double> s = new Stack<Double>(); 
        double m = Double.parseDouble(str[0]); 
        s.push(m); 
        for(int i=1;i<str.length;i++) 
        
            if(i%2==1)   
            {   
                if(str[i].compareTo("+")==0)   
                {   
                    double help = Double.parseDouble(str[i+1]);   
                    s.push(help);   
                }   
                     
                if(str[i].compareTo("-")==0)   
                {   
                    double help = Double.parseDouble(str[i+1]);   
                    s.push(-help);   
                }   
                     
                if(str[i].compareTo("*")==0)   
                {   
                    double help = Double.parseDouble(str[i+1]);   
                    double ans = s.peek();//取出栈顶元素   
                    s.pop();//消栈   
                    ans*=help;   
                    s.push(ans);   
                }   
                     
                if(str[i].compareTo("/")==0)   
                {   
                    double help = Double.parseDouble(str[i+1]);   
                    double ans = s.peek();   
                    s.pop();   
                    ans/=help;   
                    s.push(ans);   
                }   
            }   
        }   
        double ans = 0d;   
        while(!s.isEmpty())   
        {   
            ans+=s.peek();   
            s.pop();   
        }   
        String result = String.valueOf(ans); 
        return result; 
    
    
   


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...