⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jcalc.java

📁 some java class and example
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.math.*;
import java.applet.*;

public class JCalc extends Applet {
					 	
	public static Label jl;				 	
				 	
	public void actionPerformed(ActionEvent e) {
        String key = e.getActionCommand();
        if (key.equals("AC")) {
            jl.setText("0");
        }else if (key.equals("=")) {
            jl.setText(getResult(jl.getText()));
        } else if (jl.getText().equals("0") && "0123456789".indexOf(key) >=0 ) {
           jl.setText(key);
        } else {
           jl.setText(jl.getText()+key);
        }
    }

    public static void main(String args[] ) {
        System.out.println("JCalc Started");
        JFrame f = new JFrame("Java Calculator");
        
        //Begin, When compiled with Java 1.4
        //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //End, When compiled with Java 1.4        
        
        //Begin, When compiled with Java 1.2
        WindowAdapter wl = new WindowAdapter() {
        	public void windowClosing(WindowEvent e) {
        		System.exit(0);
        	}
        	
        };
        f.addWindowListener(wl);
        //End, When compiled with Java 1.2        
        
        Container cont = f.getContentPane();        
        cont.add(new JCalc());        
        f.setLocation(400,400);
        f.setSize(300,300);        
        f.setVisible(true);        
    }
    
    public JCalc() {    	
    	setLayout(new BorderLayout());    	
    	GridBagConstraints g = new GridBagConstraints();
        Panel c = new Panel();  
        c.setLayout (new GridBagLayout());
        g.fill = GridBagConstraints.BOTH;
        g.weightx = 1;
        g.weighty = 1;
        ActionListener al = new ActionListener(){
	        public void actionPerformed(ActionEvent e) {
	        String key = e.getActionCommand();
	        if (key.equals("AC")) {
	            jl.setText("0");
	        }else if (key.equals("=")) {
	            jl.setText(getResult(jl.getText()));
	        } else if (jl.getText().equals("0") && "0123456789".indexOf(key) >=0 ) {
	           jl.setText(key);
	        } else {
	           jl.setText(jl.getText()+key);
	        }
	        }
	    };
        
        addButton(c,"7",g,1,al);
        addButton(c,"8",g,1,al);
        addButton(c,"9",g,1,al);        
        addButton(c,"*",g,1,al);        
        addButton(c,"/",g,GridBagConstraints.REMAINDER,al);
        
        addButton(c,"4",g,1,al);
        addButton(c,"5",g,1,al);
        addButton(c,"6",g,1,al);        
        addButton(c,"-",g,GridBagConstraints.REMAINDER,al);
        
        addButton(c,"1",g,1,al);
        addButton(c,"2",g,1,al);
        addButton(c,"3",g,1,al);        
        addButton(c,"+",g,GridBagConstraints.REMAINDER,al);
        
        addButton(c,"0",g,1,al);
        addButton(c,".",g,1,al);
        addButton(c,"AC",g,1,al);
        addButton(c,"=",g,GridBagConstraints.REMAINDER,al);                                    
        
        jl = new Label("0");
        jl.setFont(new Font("Arial",0,20));        
        jl.setAlignment(jl.RIGHT);        
    
        add("North",jl);        
        add("Center",c);
    	
    }	
    
    public static void addButton(Panel c, String label, GridBagConstraints g, 
            int gridwidth,ActionListener al) {
        g.gridwidth = gridwidth;
        Button tempjb = new Button(label);
        tempjb.addActionListener(al);
        tempjb.setFont(new Font("Arial",0,20));
        c.add(tempjb,g);        
    }    
    public static String getResult(String a){           
        String[] expArr = splitExpression(a);
        if (expArr[1].equals("")) return a;     
        String rv = "";     
        if (expArr[1].equals("+")) {            
            //rv = ""+(Float.parseFloat(getResult(expArr[0]))+Float.parseFloat(getResult(expArr[2])));
            rv = (new BigDecimal(getResult(expArr[0])).add
                 (new BigDecimal(getResult(expArr[2])))).toString();
        } else if (expArr[1].equals("-")) {
            rv = (new BigDecimal(getResult(expArr[0])).subtract
                 (new BigDecimal(getResult(expArr[2])))).toString();
        } else if (expArr[1].equals("*")) {         
            rv = (new BigDecimal(getResult(expArr[0])).multiply
                 (new BigDecimal(getResult(expArr[2])))).toString();        
        } else {
            rv = (new BigDecimal(getResult(expArr[0])).divide
                 (new BigDecimal(getResult(expArr[2])),2,BigDecimal.ROUND_HALF_UP)).setScale(2).toString();
            
        }               
        return rv;       
        
    }   
    //public static BigDecimal toBigDecimal(String str) {
    //    BigDecimal bd = new BigDecimal(str);
    //    return bd;
    //}    
    public static String[] splitExpression(String a) {              
        String[] rv = new String[3];
        rv[0] = "";
        rv[1] = "";
        rv[2] = "";
        int pos = -1;
        
        for (int i = a.length()-1 ; i >= 1 ; i--) {         
            if ("*/".indexOf(a.substring(i,i+1)) >= 0) {
                pos = i;
                break;                              
            }
        }
        for (int i = a.length()-1 ; i >= 1 ; i--) {         
            if ("+-".indexOf(a.substring(i,i+1)) >= 0) {
                pos = i;
                break;                              
            }
        }       
        
        if (pos != -1){
            rv[0] = a.substring(0,pos).trim();
            rv[1] = a.substring(pos,pos+1).trim();
            rv[2] = a.substring(pos+1).trim();      
        }
        return rv;      
    }
     
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -