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方法!
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方法!
{
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();
}
C:\>cd myjavaC:\myjava>javac calculator.java
calculator.java:232: 'class' or 'interface' expected
public static void main(String[] args)
^
1 errorC:\myjava>
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);
}}
Exception in thread "main" java.lang.NoSuchMethodError: main
Exception in thread "main" java.lang.NoSuchMethodError: main
==============================
你是不是复制我的代码过去的啊?
你的环境变量应该没问题吧?
反正我运行起来是一点问题没有的