import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class calculator extends JApplet implements ActionListener
{
    private double arg = 0;
    private String op = "=";
    private boolean start=true;
    private boolean isback=true;
    private double storem = 0 ; private String[] KEYS={"7","8","9","/","sqrt",
     "4","5","6","*","%",
     "1","2","3","-","1/x",
     "0","+/-",".","+","="};
    private String[] COMMAND = {"Backspace","CE","C"};
    private String[] M = {"MC","MR","MS","M+"};
    private JTextField displayField;
private JTextField textField;
    private JButton keys[]=new JButton[KEYS.length];
    private JButton commands[]=new JButton[COMMAND.length];
    private JButton m[]=new JButton[M.length];    public void init()
    {
       JPanel calckeys = new JPanel();
        JPanel command = new JPanel();
        JPanel calms = new JPanel();
        JPanel calms2 = new JPanel();
        calckeys.setLayout(new GridLayout(4,5,5,8));
        command.setLayout(new GridLayout(1,3,3,3));
        calms.setLayout(new BorderLayout(3,2));
        calms2.setLayout(new GridLayout(4,1,3,3));
        Container container = getContentPane();
     container.setLayout(new BorderLayout(3,10));
     displayField=new JTextField(20);
     displayField.setEditable(false);
        displayField.setHorizontalAlignment(JTextField.RIGHT) ;     textField=new JTextField();
     textField.setEditable(false);
     textField.setHorizontalAlignment(JTextField.CENTER);
     for(int i=0;i<KEYS.length;i++)
     {
     keys[i]= new JButton(KEYS[i]);
     keys[i].setForeground(Color.blue);
     calckeys.add(keys[i]);
     keys[i].addActionListener(this);
     }
     keys[3].setForeground(Color.red);
     keys[8].setForeground(Color.red);
     keys[13].setForeground(Color.red);
     keys[18].setForeground(Color.red);
     keys[19].setForeground(Color.red);     for(int i=0;i<COMMAND.length;i++)
     {
     commands[i]= new JButton(COMMAND[i]);
     commands[i].setForeground(Color.red);
     command.add(commands[i]);
     commands[i].addActionListener(this);
     }
     calms.add("North",textField);
     for(int i=0;i<M.length;i++)
     {
     m[i]= new JButton(M[i]);
     m[i].setForeground(Color.red);
     calms2.add(m[i]);
     m[i].addActionListener(this);
     }
     calms.add("Center",calms2);
     JPanel panel1 = new JPanel();
     panel1.setLayout(new BorderLayout(3,2));
     panel1.add("North",command);
     panel1.add("Center",calckeys);
     JPanel top = new JPanel();
     top.setLayout(new BorderLayout());
     top.add("Center",displayField);
     container.add("North",top);
     container.add("West",calms);
     container.add("Center",panel1);
       commands[0].setToolTipText("清除最后一位数字");
       commands[1].setToolTipText("清除当前显示数字");
       commands[2].setToolTipText("清除当前运算");
    } public void actionPerformed(ActionEvent e)
{
String label = e.getActionCommand();
String str=displayField.getText();  //str为displayField中的内容
if(label=="C")
{
displayField.setText(" ");
op="=";
arg=0;
start=true;
isback=true;
}
else if(label=="Backspace")
{   if(isback==true){
  if(str.length()>0&&!str.equals(" "))
  displayField.setText(str.substring(0,str.length()-1));
  else
  {
  displayField.setText(" ");
      start=true;
  }} }
else if(label=="CE")
  {
     displayField.setText(" ");
     start=true;
  }
else if(label=="MC")
handleMC();
 else if(label=="MR")
handleMR();
else if(label=="MS")
handleMS();
else if(label=="M+")
handleM();
else if(label=="+/-")
{   double doubleStr=Double.parseDouble(str);
doubleStr=-1*doubleStr;
displayField.setText(Double.toString(doubleStr)); }
else if(label=="sqrt")
{
double doubleStr=Double.parseDouble(str);
  doubleStr=Math.sqrt(doubleStr);
  displayField.setText(Double.toString(doubleStr));
  isback=false;
}
else if(label=="%")
{
double doubleStr=Double.parseDouble(str);
  doubleStr=doubleStr/100.0;
  displayField.setText(Double.toString(doubleStr));
  isback=false;
}
else if(label=="1/x")
{
double doubleStr=Double.parseDouble(str);
  if(doubleStr==0) {displayField.setText("0没有倒数!"); start=true;}
  else {doubleStr=1/doubleStr;
displayField.setText(Double.toString(doubleStr));}
  isback=false;
}
else if(label=="." )
  {
boolean isDot = true;
if (displayField.getText().length()== 0)
isDot = false;
for (int i = 0; i < displayField.getText().length(); i++)
if ('.' == displayField.getText().charAt(i)) {
isDot = false;
break;
}
if (isDot == true)
displayField.setText(displayField.getText() + ".");   }
else if("0123456789".indexOf(label)>=0)
handleNumber(label);
else
handleOperater(label);
}   private void handleNumber(String key)  //0123456789
   {
   if(start) displayField.setText(key);
   else
   displayField.setText(displayField.getText()+key);
   start = false;
   isback=true;
   }
   private void handleOperater(String s)  //+,-,*,/,=
   {
   if(start)
   op=s;
   else
   {
 double n= Double.parseDouble(displayField.getText());
 if(op.equals("+")) {arg+=n; displayField.setText(Double.toString(arg)); isback=false;}
  else if(op.equals("-")) {arg-=n; displayField.setText(Double.toString(arg)); isback=false;}   else if(op.equals("*")) {arg*=n; displayField.setText(Double.toString(arg)); isback=false;}
  else if(op.equals("=")) {arg=n; displayField.setText(Double.toString(arg)); isback=false;}
 //displayField.setText(Double.toString(arg));
 else if(op.equals("/"))
 {
 if(n==0) displayField.setText("除数不能为零!");
 else {arg/=n; displayField.setText(Double.toString(arg));}
 isback=false;
 }
 op=s;
 start=true;
   }   }
    private void handleMS()
     { if(displayField.getText()!=" ")
       {storem=Double.parseDouble(displayField.getText());
       textField.setText("M");
      }      }
  private void handleMC()
    {
        textField.setText("");
          storem = 0;     }
 private void handleM()
    {
     //if(displayField.getText()!=" "&&textField.getText()=="M")
     storem+=Double.parseDouble(displayField.getText());
       System.out.println(storem);
    }
private void handleMR()
    { if(textField.getText()!=" ")
     displayField.setText(Double.toString(storem));
    arg=storem;
    start=true;
   }
}
在里面加个main方法!

解决方案 »

  1.   

    public static void main(String[] args) 
    {
    calculator at1 = new calculator();
    JFrame fr = new JFrame();
    fr.getContentPane().add(at1);
    fr.setSize(300,400);
    fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fr.setVisible(true);
    at1.init();
    at1.start();

    }
      

  2.   

    老兄,编译时间还是出错啊,
    C:\>cd myjavaC:\myjava>javac calculator.java
    calculator.java:232: 'class' or 'interface' expected
    public static void main(String[] args)
                  ^
    1 errorC:\myjava>
      

  3.   

    没错啊!!!import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    public class calculator extends JApplet implements ActionListener
    {
        private double arg = 0;
        private String op = "=";
        private boolean start=true;
        private boolean isback=true;
        private double storem = 0 ;private String[] KEYS={"7","8","9","/","sqrt",
        "4","5","6","*","%",
        "1","2","3","-","1/x",
        "0","+/-",".","+","="};
        private String[] COMMAND = {"Backspace","CE","C"};
        private String[] M = {"MC","MR","MS","M+"};
        private JTextField displayField;
    private JTextField textField;
        private JButton keys[]=new JButton[KEYS.length];
        private JButton commands[]=new JButton[COMMAND.length];
        private JButton m[]=new JButton[M.length];    public void init()
        {
           JPanel calckeys = new JPanel();
            JPanel command = new JPanel();
            JPanel calms = new JPanel();
            JPanel calms2 = new JPanel();
            calckeys.setLayout(new GridLayout(4,5,5,8));
            command.setLayout(new GridLayout(1,3,3,3));
            calms.setLayout(new BorderLayout(3,2));
            calms2.setLayout(new GridLayout(4,1,3,3));
            Container container = getContentPane();
        container.setLayout(new BorderLayout(3,10));
        displayField=new JTextField(20);
        displayField.setEditable(false);
            displayField.setHorizontalAlignment(JTextField.RIGHT) ;    textField=new JTextField();
        textField.setEditable(false);
        textField.setHorizontalAlignment(JTextField.CENTER);
        for(int i=0;i<KEYS.length;i++)
        {
        keys[i]= new JButton(KEYS[i]);
        keys[i].setForeground(Color.blue);
        calckeys.add(keys[i]);
        keys[i].addActionListener(this);
        }
        keys[3].setForeground(Color.red);
        keys[8].setForeground(Color.red);
        keys[13].setForeground(Color.red);
        keys[18].setForeground(Color.red);
        keys[19].setForeground(Color.red);    for(int i=0;i<COMMAND.length;i++)
        {
        commands[i]= new JButton(COMMAND[i]);
        commands[i].setForeground(Color.red);
        command.add(commands[i]);
        commands[i].addActionListener(this);
        }
        calms.add("North",textField);
        for(int i=0;i<M.length;i++)
        {
        m[i]= new JButton(M[i]);
        m[i].setForeground(Color.red);
        calms2.add(m[i]);
        m[i].addActionListener(this);
        }
        calms.add("Center",calms2);
        JPanel panel1 = new JPanel();
        panel1.setLayout(new BorderLayout(3,2));
        panel1.add("North",command);
        panel1.add("Center",calckeys);
        JPanel top = new JPanel();
        top.setLayout(new BorderLayout());
        top.add("Center",displayField);
        container.add("North",top);
        container.add("West",calms);
        container.add("Center",panel1);
           commands[0].setToolTipText("清除最后一位数字");
           commands[1].setToolTipText("清除当前显示数字");
           commands[2].setToolTipText("清除当前运算");
        }public void actionPerformed(ActionEvent e)
    {
    String label = e.getActionCommand();
    String str=displayField.getText();  //str为displayField中的内容
    if(label=="C")
    {
    displayField.setText(" ");
    op="=";
    arg=0;
    start=true;
    isback=true;
    }
    else if(label=="Backspace")
    {   if(isback==true){
      if(str.length()>0&&!str.equals(" "))
     displayField.setText(str.substring(0,str.length()-1));
     else
     {
     displayField.setText(" ");
         start=true;
     }}}
    else if(label=="CE")
      {
         displayField.setText(" ");
         start=true;
      }
    else if(label=="MC")
    handleMC();
     else if(label=="MR")
    handleMR();
    else if(label=="MS")
    handleMS();
    else if(label=="M+")
    handleM();
    else if(label=="+/-")
    {   double doubleStr=Double.parseDouble(str);
    doubleStr=-1*doubleStr;
    displayField.setText(Double.toString(doubleStr));}
    else if(label=="sqrt")
    {
    double doubleStr=Double.parseDouble(str);
     doubleStr=Math.sqrt(doubleStr);
     displayField.setText(Double.toString(doubleStr));
     isback=false;
    }
    else if(label=="%")
    {
    double doubleStr=Double.parseDouble(str);
     doubleStr=doubleStr/100.0;
     displayField.setText(Double.toString(doubleStr));
     isback=false;
    }
    else if(label=="1/x")
    {
    double doubleStr=Double.parseDouble(str);
     if(doubleStr==0) {displayField.setText("0没有倒数!"); start=true;}
     else {doubleStr=1/doubleStr;
    displayField.setText(Double.toString(doubleStr));}
     isback=false;
    }
    else if(label=="." )
      {
    boolean isDot = true;
    if (displayField.getText().length()== 0)
    isDot = false;
    for (int i = 0; i < displayField.getText().length(); i++)
    if ('.' == displayField.getText().charAt(i)) {
    isDot = false;
    break;
    }
    if (isDot == true)
    displayField.setText(displayField.getText() + ".");  }
    else if("0123456789".indexOf(label)>=0)
    handleNumber(label);
    else
    handleOperater(label);
    }   private void handleNumber(String key)  //0123456789
       {
       if(start) displayField.setText(key);
       else
       displayField.setText(displayField.getText()+key);
       start = false;
       isback=true;
       }
       private void handleOperater(String s)  //+,-,*,/,=
       {
       if(start)
       op=s;
       else
       {
     double n= Double.parseDouble(displayField.getText());
     if(op.equals("+")) {arg+=n; displayField.setText(Double.toString(arg)); isback=false;}
      else if(op.equals("-")) {arg-=n; displayField.setText(Double.toString(arg)); isback=false;}  else if(op.equals("*")) {arg*=n; displayField.setText(Double.toString(arg)); isback=false;}
      else if(op.equals("=")) {arg=n; displayField.setText(Double.toString(arg)); isback=false;}
     //displayField.setText(Double.toString(arg));
     else if(op.equals("/"))
     {
     if(n==0) displayField.setText("除数不能为零!");
     else {arg/=n; displayField.setText(Double.toString(arg));}
     isback=false;
     }
     op=s;
     start=true;
       }   }
        private void handleMS()
         { if(displayField.getText()!=" ")
           {storem=Double.parseDouble(displayField.getText());
           textField.setText("M");
          }      }
      private void handleMC()
        {
            textField.setText("");
              storem = 0;     }
     private void handleM()
        {
         //if(displayField.getText()!=" "&&textField.getText()=="M")
         storem+=Double.parseDouble(displayField.getText());
           System.out.println(storem);
        }
    private void handleMR()
        { if(textField.getText()!=" ")
         displayField.setText(Double.toString(storem));
        arg=storem;
        start=true;
       }
        public static void main(String[] args) 
    {
    calculator at1 = new calculator();
    JFrame fr = new JFrame();
    fr.getContentPane().add(at1);
    fr.setSize(300,400);
    fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    at1.init();
    at1.start();
    fr.setVisible(true);

    }}
      

  4.   

    楼上的,代码是没错啊,编译也正常,为何运行时报错:C:\myjava>java calculator
    Exception in thread "main" java.lang.NoSuchMethodError: main
      

  5.   

    楼上的,代码是没错啊,编译也正常,为何运行时报错:C:\myjava>java calculator
    Exception in thread "main" java.lang.NoSuchMethodError: main
    ==============================
    你是不是复制我的代码过去的啊?
    你的环境变量应该没问题吧?
    反正我运行起来是一点问题没有的