我如何翻译模式:计算器javacode [英] How I do Interpreter Pattern: Calculator javacode
问题描述
从java代码我如何在解释器模式中实现它.......
-------------- -------------------------------------------------- -------------------------------------------------- ---------
包裹测试;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java。 awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java .awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
公共类计算器扩展JPanel实现ActionListener {
private JTextField display = new JTextField(0);
private String buttonText =789/456 * 123-0。= + ;
pri vate double result = 0;
private String operator ==;
private boolean calculation = true;
公共计算器(){
setLayout(new BorderLayout());
display.setEditable(false);
add(显示,North);
JPanel p = new JPanel ();
p.setLayout(new GridLayout(4,4));
for(int i = 0;我< buttonText.length(); i ++){
JButton b = new JButton(buttonText.substring(i,i + 1));
p.add(b);
b.addActionListener(this);
}
add(p,Center);
}
public void actionPerformed(ActionEvent evt){
String cmd = evt.getActionCommand();
if('0'< = cmd.charAt(0)&& cmd.charAt(0)< ='9'|| cmd.equals(。)){
如果(计算)
display.setText(cmd);
else
display.setText(display.getText()+ cmd);
计算=假;
}否则{
if(计算){
if(cmd.equals( - )){
display.setText(cmd);
计算=假;
}否则
operator = cmd;
} else {
double x = Double.parseDouble(display.getText()) ;
计算(x);
operator = cmd;
计算=真;
}
}
}
private void calculate(double n){
if(运算符) .equals(+))
结果+ = n;
否则if(operator.equals( - ))
结果 - = n;
else if(operator.equals(*))
result * = n;
else if(operator。等于(/))
结果/ = n;
否则if(operator.equals(=))
result = n;
display.setText(+ result);
}
public static void main( String [] args){
JFrame frame = new JFrame();
frame.setTitle(Calculator);
frame.setSize (200,200);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit (0);
}
});
容器contentPane = frame.getContentPane();
contentPane.add(新计算器());
frame.show();
}
}
翻译模式 [ ^ ]
玩得开心!
From java code how i can make it in Interpreter Pattern .......
---------------------------------------------------------------------------------------------------------------------------
package test;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator extends JPanel implements ActionListener {
private JTextField display = new JTextField("0");
private String buttonText = "789/456*123-0.=+";
private double result = 0;
private String operator = "=";
private boolean calculating = true;
public Calculator() {
setLayout(new BorderLayout());
display.setEditable(false);
add(display, "North");
JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 4));
for (int i = 0; i < buttonText.length(); i++) {
JButton b = new JButton(buttonText.substring(i, i + 1));
p.add(b);
b.addActionListener(this);
}
add(p, "Center");
}
public void actionPerformed(ActionEvent evt) {
String cmd = evt.getActionCommand();
if ('0' <= cmd.charAt(0) && cmd.charAt(0) <= '9' || cmd.equals(".")) {
if (calculating)
display.setText(cmd);
else
display.setText(display.getText() + cmd);
calculating = false;
} else {
if (calculating) {
if (cmd.equals("-")) {
display.setText(cmd);
calculating = false;
} else
operator = cmd;
} else {
double x = Double.parseDouble(display.getText());
calculate(x);
operator = cmd;
calculating = true;
}
}
}
private void calculate(double n) {
if (operator.equals("+"))
result += n;
else if (operator.equals("-"))
result -= n;
else if (operator.equals("*"))
result *= n;
else if (operator.equals("/"))
result /= n;
else if (operator.equals("="))
result = n;
display.setText("" + result);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Calculator");
frame.setSize(200, 200);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = frame.getContentPane();
contentPane.add(new Calculator());
frame.show();
}
}
Interpreter pattern[^]
Have fun!
这篇关于我如何翻译模式:计算器javacode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!