/**
 * @(#)Calculator.java
 *
 * Calculator application
 *
 * @author 
 * @version 1.00 2009/5/25
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//import java.io.*;
public class c extends JFrame implements ActionListener
{
    public c()
    {
     JFrame f=new JFrame("Calculator");
     Container cp=f.getContentPane();
     cp.setLayout(new FlowLayout());
     JPanel p1=new JPanel();
     JTextField t= new JTextField(20);
     p1.add(t);
     t.addActionListener(this);
     JPanel p2=new JPanel(new GridLayout(4,4));
     JButton bt1=new JButton("7"),
           bt2=new JButton("8"),
       bt3=new JButton("9"),
       bt4=new JButton("/"),
       bt5=new JButton("4"),
       bt6=new JButton("5"),
       bt7=new JButton("6"),
       bt8=new JButton("*"),
       bt9=new JButton("1"),
       bt10=new JButton("2"),
       bt11=new JButton("3"),
       bt12=new JButton("-"),
       bt13=new JButton("0"),
       bt14=new JButton("."),
       bt15=new JButton("="),
       bt16=new JButton("+");    
      p2.add(bt1);bt1.addActionListener(this);
      p2.add(bt2);bt2.addActionListener(this);
      p2.add(bt3);bt3.addActionListener(this);
      p2.add(bt4);bt4.addActionListener(this);
      p2.add(bt5);bt5.addActionListener(this);
      p2.add(bt6);bt6.addActionListener(this);
      p2.add(bt7);bt7.addActionListener(this);
      p2.add(bt8);bt8.addActionListener(this);
      p2.add(bt9);bt9.addActionListener(this);
      p2.add(bt10);bt10.addActionListener(this);
      p2.add(bt11);bt11.addActionListener(this);
      p2.add(bt12);bt12.addActionListener(this);
      p2.add(bt13);bt13.addActionListener(this);
      p2.add(bt14);bt14.addActionListener(this);
      p2.add(bt15);bt15.addActionListener(this);
      p2.add(bt16);bt16.addActionListener(this); 
      f.pack();
      cp.add(p1);
      cp.add(p2);
      f.setSize(200,200);
      f.setVisible(true);
      f.addWindowListener(new WinLis());
    }
    class WinLis extends WindowAdapter
    {
     public void windowClosing(WindowEvent e)
     {
      System.exit(0);
     }
    }
    public static void main(String[]args)
    {
     new c();
    }
    public void actionPerformed(ActionEvent e)
    {
     private double arg;
        private String op="=";
        private boolean start=true;
        String s=e.getActionCommand();
     if('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.equals("."))
      {
       if(start) display.setText(s);
       else display.setText(display.getText()+s);
          }
        else
       {
       if(start)
       {
        if(s.equals("."))
        {
         dispaly.setText(s);
         start=false;
        }
        else 
        {
         if(start)
         {
          if(s.equals("-"))
           {
            dispaly.setText(s);
                     start=false;
                       }
         } 
            else op=s;
        }
       }
          else
          {
           double x=Double.parseDouble(dispaly.getText());
           calculate(x);
        op=s;
        start=true;
       }
           }
   }
   public void calculate(double n)
   {
       if(op.equals("+")) arg+=n;
     else if(op.equals("-")) arg-=n;
        else if(op.equals("*")) arg*=n;
        else if(op.equals("/")) arg/=n;
        else if(op.equals("=")) arg=n;
        display.setText(" "+arg);
    }
}我是新手,刚编写了一个计算器的程序,请各位老师帮忙看看为什么出错啊。具体错误:E:\homework3\Calculator\c\src\c.java:77: 非法的表达式开始
        private double arg;
        ^
E:\homework3\Calculator\c\src\c.java:81: 非法的类型开始
        if('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.equals("."))
        ^
E:\homework3\Calculator\c\src\c.java:81: 需要 <标识符>
        if('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.equals("."))
                        ^
E:\homework3\Calculator\c\src\c.java:81: 非法的类型开始
        if('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.equals("."))
                         ^
E:\homework3\Calculator\c\src\c.java:86: 非法的类型开始
        else
        ^
E:\homework3\Calculator\c\src\c.java:117: 需要为 class、interface 或 enum
   public void calculate(double n)
          ^
E:\homework3\Calculator\c\src\c.java:120: 需要为 class、interface 或 enum
        else if(op.equals("-")) arg-=n;
        ^
E:\homework3\Calculator\c\src\c.java:121: 需要为 class、interface 或 enum
        else if(op.equals("*")) arg*=n;
        ^
E:\homework3\Calculator\c\src\c.java:122: 需要为 class、interface 或 enum
        else if(op.equals("/")) arg/=n;
        ^
E:\homework3\Calculator\c\src\c.java:123: 需要为 class、interface 或 enum
        else if(op.equals("=")) arg=n;
        ^
E:\homework3\Calculator\c\src\c.java:124: 需要为 class、interface 或 enum
        display.setText(" "+arg);
        ^
E:\homework3\Calculator\c\src\c.java:125: 需要为 class、interface 或 enum
    }
    ^
12 错误
来源: http://www.programbbs.com/bbs/view22-20801-1.htm

解决方案 »

  1.   

    方法内的变量不能加修饰符:public void actionPerformed(ActionEvent e)
    {
    /*下面这段改掉:
        private double arg;
            private String op="=";
            private boolean start=true;
    */
        double arg;
        String op="=";
        boolean start = true;
            String s=e.getActionCommand();
        if('0' <=s.charAt(0)&&s.charAt(0) <='9'||s.equals("."))
          {
          if(start) display.setText(s);
          else display.setText(display.getText()+s);
              }
            else
          {
          if(start)
          {
            if(s.equals("."))
            {
            dispaly.setText(s);
            start=false;
            }
            else
            {
            if(start)
            {
              if(s.equals("-"))
              {
                dispaly.setText(s);
                        start=false;
                          }
            }
                else op=s;
            }
          }
              else
              {
              double x=Double.parseDouble(dispaly.getText());
              calculate(x);
            op=s;
            start=true;
          }
              }
      } 
      

  2.   

    public, private, protected这种东西,不能写在方法里面
    要写在class内,method外