62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
class Calculate {
private Stack<Character> sign = new Stack<Character>();
private ArrayList<Character> list = new ArrayList<Character>();
public void addToStack( char c ){
System.out.println("addToStack");
sign.push( c );
System.out.println("符号栈中元素个数为"+sign.size());
}
public void addToList( char c ){
System.out.println("addToList");
list.add( c );
}
public void deleteChar(){
System.out.println("deleteChar");
}
public void emptyStack(){
System.out.println("emptyStack");
}
public void emptyList(){
System.out.println("emptyList");
}
public String result(){
return "结果";
}
}
import javax.swing.*;
import java.awt.*;
class UI {
private JFrame myCalculate;
private JPanel contentPanel;
private JPanel buttonPanel;
private JTextField result;
private JButton bracketLeft;
private JButton bracketRight;
private JButton num0;
private JButton num1;
private JButton num2;
private JButton num3;
private JButton num4;
private JButton num5;
private JButton num6;
private JButton num7;
private JButton num8;
private JButton num9;
private JButton add;
private JButton sub;
private JButton mul;
private JButton div;
private JButton dot;
private JButton equal;
private JButton delete;
private JButton empty;
private Listener myListener;
public UI(){
myCalculate = new JFrame("计算器");
contentPanel = new JPanel();
BorderLayout borderLayout = new BorderLayout();
borderLayout.setVgap(20);
contentPanel.setLayout(borderLayout);
myCalculate.setContentPane(contentPanel);
result = new JTextField(20);
result.setEditable(false);
bracketLeft = new JButton("(");
bracketRight = new JButton(")");
num0 = new JButton("0");
num1 = new JButton("1");
num2 = new JButton("2");
num3 = new JButton("3");
num4 = new JButton("4");
num5 = new JButton("5");
num6 = new JButton("6");
num7 = new JButton("7");
num8 = new JButton("8");
num9 = new JButton("9");
add = new JButton("+");
sub = new JButton("-");
mul = new JButton("×");
div = new JButton("÷");
dot = new JButton(".");
equal = new JButton("=");
delete = new JButton("删除");
empty = new JButton("清空");
myListener = new Listener();
bracketLeft.addActionListener(myListener);
bracketRight.addActionListener(myListener);
num0.addActionListener(myListener);
num1.addActionListener(myListener);
num2.addActionListener(myListener);
num3.addActionListener(myListener);
num4.addActionListener(myListener);
num5.addActionListener(myListener);
num6.addActionListener(myListener);
num7.addActionListener(myListener);
num8.addActionListener(myListener);
num9.addActionListener(myListener);
add.addActionListener(myListener);
sub.addActionListener(myListener);
mul.addActionListener(myListener);
div.addActionListener(myListener);
dot.addActionListener(myListener);
equal.addActionListener(myListener);
delete.addActionListener(myListener);
empty.addActionListener(myListener);
buttonPanel = new JPanel();
GridLayout gridLayout = new GridLayout(5,4);
gridLayout.setHgap(10);
gridLayout.setVgap(30);
buttonPanel.setLayout(gridLayout);
buttonPanel.add(bracketLeft);
buttonPanel.add(bracketRight);
buttonPanel.add(delete);
buttonPanel.add(empty);
buttonPanel.add(num7);
buttonPanel.add(num8);
buttonPanel.add(num9);
buttonPanel.add(div);
buttonPanel.add(num4);
buttonPanel.add(num5);
buttonPanel.add(num6);
buttonPanel.add(mul);
buttonPanel.add(num1);
buttonPanel.add(num2);
buttonPanel.add(num3);
buttonPanel.add(sub);
buttonPanel.add(equal);
buttonPanel.add(dot);
buttonPanel.add(num0);
buttonPanel.add(add);
contentPanel.add("North",result);
contentPanel.add("Center",buttonPanel);
myCalculate.setSize(300,350);
myCalculate.setVisible(true);
myCalculate.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
}
public void setString( String s ){
result.setText( s );
}
public void addString( String s ){
result.setText( result.getText() + s );
}
public void deleteChar(){
System.out.println("deleteChar");
}
}
import java.awt.event.*;
class Listener implements ActionListener {
private boolean isSign( char c ){
switch( c ){
case '(':
case ')':
case '+':
case '-':
case '×':
case '÷':return true;
default:return false;
}
}
private boolean isNum( char c){
if( c >= '.'&&c <= '9')
return true;
else
return false;
}
public void actionPerformed( ActionEvent e ){
Calculate myCalculate = new Calculate();
// System.out.println( e.getActionCommand() );
// Main.calculate.setString( e.getActionCommand() );
String button = e.getActionCommand();
char c = (button.toCharArray())[0];
if( isSign( c ) )
myCalculate.addToStack( c );//把符号添加到栈里
else if( isNum( c ) ){
Main.calculate.addString( button );//把操作数添加到文本框里
myCalculate.addToList( c );//把操作数添加到输出序列中
}
else if( button.equals( "删除" ) ){
Main.calculate.deleteChar();
myCalculate.deleteChar();
}
else if( button.equals( "清空" ) ){
Main.calculate.setString("");
myCalculate.emptyStack();
myCalculate.emptyList();
}
else if( c == '=' )
Main.calculate.setString( myCalculate.result() );
}
}
public class Main{
static UI calculate;
public static void main( String[] args ){
calculate = new UI();
}
}
class Listener implements ActionListener {
Calculate myCalculate = new Calculate();//把这个Calculate对象设置为全局对象
private boolean isSign( char c ){
switch( c ){
case '(':
case ')':
case '+':
case '-':
case '×':
case '÷':return true;
default:return false;
}
}
private boolean isNum( char c){
if( c >= '.'&&c <= '9')
return true;
else
return false;
}
public void actionPerformed( ActionEvent e ){
// System.out.println( e.getActionCommand() );
// Main.calculate.setString( e.getActionCommand() );
String button = e.getActionCommand();
char c = (button.toCharArray())[0];
if( isSign( c ) )
myCalculate.addToStack( c );//把符号添加到栈里
else if( isNum( c ) ){
Main.calculate.addString( button );//把操作数添加到文本框里
myCalculate.addToList( c );//把操作数添加到输出序列中
}
else if( button.equals( "删除" ) ){
Main.calculate.deleteChar();
myCalculate.deleteChar();
}
else if( button.equals( "清空" ) ){
Main.calculate.setString("");
myCalculate.emptyStack();
myCalculate.emptyList();
}
else if( c == '=' )
Main.calculate.setString( myCalculate.result() );
}
}