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

📄 calculator.java

📁 Java实现的计算器程序
💻 JAVA
字号:
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
   class Calculator
    { 
      public static void main(String[] args)
       { 
         CalculatorFrame frame=new CalculatorFrame(); 
         frame.setSize(400,210);
         frame.setVisible(true);
        }
    }
   class CalculatorFrame extends JFrame
     { 
        public CalculatorFrame()
        {
            setTitle("Calculator");
            CalculatorPanel panel=new CalculatorPanel();
            add(panel); 
            pack(); //调整此窗口的大小  以适合其子组件的首选大小和布局
         }
      } 
    class CalculatorPanel extends Panel 
      { 
        private JTextField display;
        private JPanel panel;
        private double result;
        private String lastCommand;
        private boolean start;
        private boolean flag;
      public CalculatorPanel()
        { 
           setLayout(new BorderLayout()); 
           result=0; 
           lastCommand="="; 
           start=true; 
           flag=true; 
           display=new JTextField("0"); 
           display.setBackground(new Color(150,150,150));
           display.setEnabled(false); 
           add(display,BorderLayout.NORTH); 
           ActionListener insert=new InsertAction(); 
           ActionListener command=new CommandAction(); 
           panel=new JPanel(); 
           panel.setLayout(new GridLayout(5,5)); 
           addButton("sin",command); 
           addButton("cos",command); 
           addButton("tan",command); 
           addButton("CE",command); 
           addButton("←",command); 
           addButton("7",insert); 
           addButton("8",insert); 
           addButton("9",insert); 
           addButton("×",command); 
           addButton("x^2",command); 
           addButton("4",insert); 
           addButton("5",insert); 
           addButton("6",insert); 
           addButton("÷",command); 
           addButton("log",command); 
           addButton("1",insert); 
           addButton("2",insert); 
           addButton("3",insert); 
           addButton("-",command); 
           addButton("sqrt",command); 
           addButton("0",insert); 
           addButton(".",insert); 
           addButton("=",command); 
           addButton("+",command); 
           addButton("1/x",command); 
           add(panel,BorderLayout.CENTER);
         } 
     private void addButton(String label,ActionListener listener)
         { 
           JButton button=new JButton(label); 
           button.addActionListener(listener);
           button.setBackground(new Color(200,200,200));
           button.setForeground(new Color(100,100,0));
           panel.add(button); 
          } 
          
      private class InsertAction implements ActionListener 
       { 
         public void actionPerformed(ActionEvent event)
          { 
             String input=event.getActionCommand(); 
             if(start&&flag) 
               { 
                display.setText(""); 
                start=false; 
               } 
             if(flag) 
                display.setText(display.getText()+input); 
           }   } 
      private class CommandAction implements ActionListener
       {
        public void actionPerformed(ActionEvent event)
        {
          String command=event.getActionCommand();
         if(command.equals("CE"))
          { display.setText("0");
             start=true;
             flag=true;
             command="=";
          }
         else if(start&&flag)
          {
            if(command.equals("-"))
              {display.setText(command);
               start=false;  
               }
           else if((command.equals("1/x")||command.equals("sin")||command.equals("x^2")||command.equals("n!")||command.equals("cos")||command.equals("tan")||command.equals("log")||command.equals("sqrt"))&&flag)
               calculate(Double.parseDouble(display.getText()),command);
           else if(flag)
             lastCommand=command;
               }       
           else{
              if(command.equals("←")&&flag)
               {  String s=display.getText();
                  char[] s1=s.toCharArray();
                  if(s.length()>=2)
                  { String s2=new String(s1,0,s.length()-1);
                          display.setText(s2);
                        }
                     else
                        {  display.setText("0");
                           start=true;
                        }
                   }
               else if(flag)
                 //flag为真  执行calculate()
                   {calculate(Double.parseDouble(display.getText()),command);
                    lastCommand=command;
                  start=true;  }
                 }
               }
            }          
  public void calculate(double x,String command)
      
     { if(lastCommand.equals("+"))
         result=result+x;
      else if(lastCommand.equals("-"))
          result-=x;
      else if(lastCommand.equals("÷"))
        {if(x!=0)
           result/=x;
         else
             { display.setText("除数不能为0");
              start=false;
              flag=false;
              return;
             }
         }
       else if(lastCommand.equals("×"))
            result*=x;
       else if(command.equals("1/x"))
          {if(x!=0)   result=1/x;
            else 
             { display.setText("除数不能为0");
               start=false;
               flag=false;
               return;
            }
         }
       else if(command.equals("sin"))
             result=Math.sin(x);
        else if(command.equals("x^2"))
             result=x*x;
       else if(command.equals("cos"))
             result=Math.cos(x);
       else if(command.equals("tan"))
             result=Math.tan(x);
       
       else if(command.equals("sqrt"))
              {if(x>=0)
                     result=Math.sqrt(x);
               else
                   {display.setText("函数输入无效");
                   start=false;
                   flag=false;
                   return;
                  }
            }
        else if(command.equals("log"))
             {if(x>0)
                     result=Math.log(x);
               else
                   {display.setText("函数输入无效");
                   start=false;
                   flag=false;
                   return;
                  }
            }
        else if(lastCommand.equals("="))
              result=x;        
        display.setText(""+result);
   }
 }

⌨️ 快捷键说明

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