就是实现+-*/基础的
大概多少行??

解决方案 »

  1.   

    //package mycaculater;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class MyCalculater extends JFrame implements ActionListener{

    JTextField tf=new JTextField();
    String num="";
    Double number;
    int pointCount=0; char operation;  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    b10=new JButton("+");
    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    b17=new JButton("S");
    JButton    b18=new JButton("C");
    JButton    b19=new JButton("+/-");

    void buildConstraints(GridBagConstraints gbc,int gx,int gy,
    int gw,int gh,int wx,int wy){

    gbc.gridx=gx;
    gbc.gridy=gy;
    gbc.gridwidth=gw;
    gbc.gridheight=gh;
    gbc.weightx=wx;
    gbc.weighty=wy;

    }  




    public  MyCalculater(){                    
    super("MyCaculater");
    setBounds(200,200,280,215);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);

    GridBagLayout exlayout=new GridBagLayout();
    GridBagConstraints constraints=new GridBagConstraints();
    JPanel expane=new JPanel();
    expane.setLayout(exlayout);
        b0.addActionListener(this);
    b1.addActionListener(this);
    b2.addActionListener(this);
        b3.addActionListener(this);
        b4.addActionListener(this);
    b5.addActionListener(this);
        b6.addActionListener(this);
    b7.addActionListener(this);
    b8.addActionListener(this);
        b9.addActionListener(this);
        b10.addActionListener(this);
    b11.addActionListener(this);
        b12.addActionListener(this);
    b13.addActionListener(this);
    b14.addActionListener(this);
        b15.addActionListener(this);
        b16.addActionListener(this);
    b17.addActionListener(this);
        b18.addActionListener(this);
    b19.addActionListener(this);

    GridLayout inlayout=new GridLayout(4,5,5,5);
    JPanel inpane2=new JPanel();
    inpane2.setLayout(inlayout);
    inpane2.add(b1);
    inpane2.add(b2);
    inpane2.add(b3);
    inpane2.add(b10);
    inpane2.add(b18);
    inpane2.add(b4);
    inpane2.add(b5);
    inpane2.add(b6);
    inpane2.add(b11);
    inpane2.add(b16);
    inpane2.add(b7);
    inpane2.add(b8);
    inpane2.add(b9);
    inpane2.add(b12);
    inpane2.add(b19);
    inpane2.add(b0);
    inpane2.add(b15);
    inpane2.add(b13);
    inpane2.add(b17);
    inpane2.add(b14);
      

  2.   


        tf.setEditable(false);
        buildConstraints(constraints,0,0,1,1,100,20);
        constraints.fill=GridBagConstraints.HORIZONTAL;
        
        exlayout.setConstraints(tf,constraints);
        expane.add(tf);
        
        buildConstraints(constraints,0,1,1,1,100,80);
        exlayout.setConstraints(inpane2,constraints);
        
        
    expane.add(inpane2);
    setContentPane(expane); 


    setVisible(true);

    }




    public void actionPerformed(ActionEvent event){

     
    if(event.getSource()==b10){

    if(num!=""){// if num have not exact digital,then press +,-*/ button
       operation='+';
       number=new Double(num);
       num="";
       if(pointCount!=0)
         pointCount=0;
       
     
    }
    }
      
    if(event.getSource()==b11){
    if(num!=""){
    operation='-';
       number=new Double(num);
       num="";
        if(pointCount!=0)
         pointCount=0;
    }

    }
      
        if(event.getSource()==b12){
         if(num!=""){
         operation='*';
            number=new Double(num);
            num="";
             if(pointCount!=0)
         pointCount=0;
         }
        
        }
       
    if(event.getSource()==b13){
    if(num!=""){
    operation='/';
       number=new Double(num);
       num="";
       if(pointCount!=0)
         pointCount=0; 
    }

    }
       
                  
    //number control
    if(event.getSource()==b1){
    num=num+'1';
    tf.setText(num);

    }
      
    if(event.getSource()==b2){
    num=num+'2';
    tf.setText(num);
    }
      
    if(event.getSource()==b3){
    num=num+'3';
    tf.setText(num);
    }
      
    if(event.getSource()==b4){
    num=num+'4';
    tf.setText(num);
    }
      
    if(event.getSource()==b5){
    num=num+'5';
    tf.setText(num);
    }
      
    if(event.getSource()==b6){
    num=num+'6';
    tf.setText(num);
    }
      
    if(event.getSource()==b7){
    num=num+'7';
    tf.setText(num);
    }

      
    if(event.getSource()==b8){
    num=num+'8';
    tf.setText(num);
     
    }
        
    if(event.getSource()==b9){
    num=num+'9';
    tf.setText(num);
    }
      
    if(event.getSource()==b0){
    num=num+'0';                     
    tf.setText(num);
    }
      
    if(event.getSource()==b15){
       if(pointCount==0){
          num=num+'.';
          pointCount++;
       }
       tf.setText(num);

    }
    if(event.getSource()==b16){

    if(num.length()==1){

    num="";
    tf.setText(num);
    char n[]=num.toCharArray();
    boolean pointExist=false;

    for(int i=0;i<=(num.length()-1);i++)
        {
       if(n[i]=='.')
       pointExist=true;
       break;
        }

           if(pointExist==false)
           pointCount=0;

     }///////////////////
     if(num.length()>1){

    num=num.substring(0,num.length()-1);
    tf.setText(num);
    char n[]=num.toCharArray();
    boolean pointExist=false;

    for(int i=0;i<=(num.length()-1);i++)
        {
       if(n[i]=='.')
       pointExist=true;
       break;
        }

           if(pointExist==false)
           pointCount=0;

     }////////////////// /////////////
    }



     
    if(event.getSource()==b17){
    if(num!=""){
      Double n=new Double(num);
      
        if(n.doubleValue()>=0){
    double display=Math.sqrt(n.doubleValue());
    num=""+display;
    tf.setText(num);
        }
        else
        tf.setText("input error");

     
      

    if(event.getSource()==b18){  
    num="";

    pointCount=0;
    tf.setText(num);

    }   
    if(event.getSource()==b19){
    if(num!=""){

        Double n=new Double(num);
        if(n.floatValue()>0){
         num="-"+n.doubleValue();
            tf.setText(num);
        }
        else {
         num=""+(-n.doubleValue());
         tf.setText(num);
        }
        
     
        }   
        }
        if(event.getSource()==b14){
         double result;
         pointCount=1;//result is a float number with '.'
         switch (operation){
         case '+':if(num!=""){
              Double n1=new Double(num);
                  result=n1.doubleValue()+number.doubleValue();
                  num=""+result;
                  tf.setText(""+result);
                  operation='\0';
                  number=new Double("0");
                  n1=null;
                  }
                   break;
         case '-':if(num!=""){ 
                  Double n2=new Double(num);
                  result=number.doubleValue()-n2.doubleValue();
                  num=""+result;
                  tf.setText(""+result);
                  operation='\0';
                  number=new Double("0");
                  n2=null;
                  }
                       
                  break;
                  
            case '*':if(num!=""){
                     Double n3=new Double(num);
                  result=number.doubleValue()*n3.doubleValue();
                  num=""+result;
                  tf.setText(""+result);
                  operation='\0';
                  number=new Double("0");
                  n3=null;
                      }
                  
                  break;
            case '/':if(num!=""){
                       Double n4=new Double(num);
                    if(n4.doubleValue()!=0){
                   result=number.doubleValue()/n4.doubleValue();
                     num=""+result;
                    tf.setText(""+result);
                    number=new Double("0");
                    operation='\0';
                     n4=null;
                     }
                     else{
                   tf.setText("input error");
                   n4=null;
                     } 
                      }
                  break;
                 
                      
           default :    tf.setText(""+num);
           
         }
        }
      }// end actionPerformed()
    public static void main(String[] s){

    MyCalculater calculater=new MyCalculater();

    }
    }
    这是我刚学JAV时编的小程序,按顺序粘贴在一块就行了,希望对楼主有帮助!!
      

  3.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class Calculator
    {
    public static void main(String args[])
    {
    CalculatorFrame frame=new CalculatorFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.show();
    }
    }class CalculatorFrame extends JFrame
    {
    public CalculatorFrame()
    {
    setTitle("Calculator");
    setSize(300,200);
    CalculatorPanel panel=new CalculatorPanel();
    getContentPane().add(panel);
    }
    }class CalculatorPanel extends JPanel
    {
    public CalculatorPanel()
    {
    setLayout(new BorderLayout());
    result=0;
    lastCommand="=";
    start=true;

    display=new JLabel("0");
    add(display,BorderLayout.NORTH);

    ActionListener insert=new InsertAction();
    ActionListener command=new CommandAction();

    panel=new JPanel();
    panel.setLayout(new GridLayout(4,4));

    addButton("7",insert);
    addButton("8",insert);
    addButton("9",insert);
    addButton("/",command);

    addButton("4",insert);
    addButton("5",insert);
    addButton("6",insert);
    addButton("*",command);

    addButton("1",insert);
    addButton("2",insert);
    addButton("3",insert);
    addButton("-",command);

    addButton("0",insert);
    addButton(".",insert);
    addButton("=",command);
    addButton("+",command);

    add(panel,BorderLayout.CENTER);
    }
    private void addButton(String label,ActionListener listener)
    {
    JButton button=new JButton(label);
    button.addActionListener(listener);
    panel.add(button);
    }

    private class InsertAction implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    String input=e.getActionCommand();
    if(start)
    {
    display.setText("");
    start=false;
    }
    display.setText(display.getText()+input);
    }
    }

    private class CommandAction implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    String command=e.getActionCommand();
    if(start)
    {
    if(command.equals("-"))
    {
    display.setText(command);
    start=false;
    }
    else 
    lastCommand=command;
    }
    else
    {
    calculate(Double.parseDouble(display.getText()));
    lastCommand=command;
    start=true;
    }
    }
    }

    public void calculate(double x)
    {
    if(lastCommand.equals("+"))result+=x;
    else if(lastCommand.equals("-"))result-=x;
    else if(lastCommand.equals("*"))result*=x;
    else if(lastCommand.equals("/"))result/=x;
    else if(lastCommand.equals("="))result=x;

    display.setText(""+result);
    }
    private JLabel display;
    private JPanel panel;
    private double result;
    private String lastCommand;
    private boolean start;
    }我的,用了126,界面做得很简单,lz可以考虑改一下