Java miniräknare med GUI
har gjort en miniräknare med ett enkelt GUI och började med att bara ha + och - som alternativ, sen ville jag ha * och delat också men blev fundersam på hur gör jag då? Då är det Calculate delen jag behöver lite hjälp att få in * samt /
den huvudsakliga tanken är alltså att jag ska kunna räkana ut tex
1+1
2-1
10/2
2*5
Var för sig och inte "3+5*7-2"
koden:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
//Instansvariabler
private Container cont;
private JTextField display;
//main()-metod
public static void main(String[] args)
{
Calculator calc = new Calculator();
calc.setVisible(true);
}
//Konstruktor
public Calculator()
{
initiateInstanceVariables();
buildFrame();
}
//Metoder
private void initiateInstanceVariables()
{
cont = getContentPane();
display = new JTextField(20);
}
private void buildFrame()
{
setTitle("Mini Miniräknare");
setSize(325, 100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
cont.setLayout(new BorderLayout());
buildOpButtonPanel();
buildDispPanel();
}
private void buildOpButtonPanel()
{
JPanel opButtonPanel = new JPanel();
JButton button;
button = new JButton("C");
button.addActionListener(this);
opButtonPanel.add(button);
button = new JButton("+");
button.addActionListener(this);
opButtonPanel.add(button);
button = new JButton("/");
button.addActionListener(this);
opButtonPanel.add(button);
button = new JButton("*");
button.addActionListener(this);
opButtonPanel.add(button);
button = new JButton("-");
button.addActionListener(this);
opButtonPanel.add(button);
button = new JButton("=");
button.addActionListener(this);
opButtonPanel.add(button);
cont.add(opButtonPanel, BorderLayout.SOUTH);
}
private void buildDispPanel()
{
JPanel dispPanel = new JPanel(new GridLayout(4,3));
dispPanel.add(display);
cont.add(dispPanel, BorderLayout.NORTH);
}
public void actionPerformed(ActionEvent e)
{
String buttonText = e.getActionCommand();
if(buttonText.equals("="))
{
calculate();
}
else
{
if(buttonText.equals("C"))
{
clearDisplay();
}
else
{
show(buttonText);
}
}
}
private void calculate()
{
String strExp = display.getText();
int operatorPos = strExp.indexOf("+");
if(operatorPos>-1)//addition
{
String firstTerm = strExp.substring(0,operatorPos);
String secondTerm = strExp.substring(operatorPos+1, strExp.length());
int nr1 = Integer.parseInt(firstTerm);
int nr2 = Integer.parseInt(secondTerm);
int sum = nr1 + nr2;
display.setText(Integer.toString(sum));
}
else
{
operatorPos = strExp.indexOf("-");
String firstTerm = strExp.substring(0,operatorPos);
String secondTerm = strExp.substring(operatorPos+1, strExp.length());
int nr1 = Integer.parseInt(firstTerm);
int nr2 = Integer.parseInt(secondTerm);
int sum = nr1 - nr2;
display.setText(Integer.toString(sum));
}
}
private void clearDisplay()
{
display.setText("");
}
private void show(String bText)
{
display.setText(display.getText() + bText);
}
}
Är medveten om att jag ska göra else if:
if (operatorPos>-1) {}
else if(xxxx){}
else if(xxxx){}
else if(xxxx){}
AMD Phenom II X4 9556- kylls av Cooler Master V8 - Windows 7 64BIT - 8 GB 1600Mhz Corsair DDR3 - Radeon HD 6800 - Cooler Master Scout - Silver Power SP-SS620M 620W PSU - Corsair SSD Force Series F60A, 60GB - Western Digital Caviar Black 1,5TB 7200RPM-