我如何翻译模式:计算器javacode [英] How I do Interpreter Pattern: Calculator javacode

查看:73
本文介绍了我如何翻译模式:计算器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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆