Click here to Skip to main content
15,894,720 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
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();
}
}
Posted
Comments
ZurdoDev 4-Dec-14 21:15pm    
I don't understand your question. Explain where you are stuck.
Member 11287299 5-Dec-14 2:00am    
I need to make this code to in form design pattern of "Interpreter pattern". How I can do?
ZurdoDev 5-Dec-14 7:30am    
You can rewrite it. Where are you stuck? We're not going to do it all for you.
Member 11287299 5-Dec-14 1:59am    
I need to make this code to in form design pattern of "Interpreter pattern". How I can do?
TorstenH. 11-Dec-14 10:14am    
I gave you a link for your task.
I will not provide code, as that is your task to do.
Teachers can see when the code is not yours.

Think about that next time before such a accept/undo hazzle and downvoting.

1 solution

Interpreter pattern[^]

Have fun!
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900