Ciao a tutti,
è da poco che ho iniziato a programmare e sto cercando di creare una calcolatrice che possa calcolare più numeri.
Purtroppo quando faccio ad esempio 5+6+5*2 quando clicco "*" non mi calcola più l'operazione. Ho controllato più volte ma non riesco a capire.
Qualcuno saprebbe dirmi dove sbaglio?
Grazie mille!
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class guiform {
private JTextField textField;
private JPanel panelPrincipale;
private JButton quattro;
private JButton perCento;
private JButton potenzaButton;
private JButton cinque;
private JButton sette;
private JButton a1XButton;
private JButton otto;
private JButton due;
private JButton uno;
private JButton cancTutto;
private JButton cancTesto;
private JButton cancUnNumero;
private JButton radiceButton;
private JButton divisoButton;
private JButton nove;
private JButton menoButton;
private JButton sei;
private JButton piuButton;
private JButton tre;
private JButton ugualeButton;
private JTextArea textArea;
private JButton button2;
private JButton zero;
private JButton virgola;
private JButton perButton;
private static int risultato = 0 ;
private static int numero=0;
static boolean addizioneFlag=false;
static boolean sottrazioneFlag=false;
static boolean moltiplicazioneFlag=false;
static boolean divisioneFlag = false;
static boolean operazioneAccesaFlag = false;
static boolean primaOperazioneFlag=true;
static String testo="";
public guiform(){
//FINESTRA___________________________________________________________________FINESTRA__________________________________________________________________________
JFrame finestra = new JFrame();
finestra.setBounds(100,100,490,635);
//finestra.setResizable(false);
finestra.setContentPane(panelPrincipale);
finestra.setVisible(true);
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//I BUTTON NUMERI LISTENER_________________________________________________I BUTTON NUMERI LISTENER_______________________________________________
zero.addActionListener(new clickBottone());
uno.addActionListener(new clickBottone());
due.addActionListener(new clickBottone());
tre.addActionListener(new clickBottone());
quattro.addActionListener(new clickBottone());
cinque.addActionListener(new clickBottone());
sei.addActionListener(new clickBottone());
sette.addActionListener(new clickBottone());
otto.addActionListener(new clickBottone());
nove.addActionListener(new clickBottone());
//BUTTON OPERAZIONI________________________________________BUTTON__OPERAZIONI_________________________________________________________
piuButton.addActionListener(new clickAddizione());
menoButton.addActionListener(new clickSottrazione());
perButton.addActionListener(new clickMoltiplicazione());
divisoButton.addActionListener(new clickDivisione());
ugualeButton.addActionListener(new clickRisultato());
}
//MAIN__________________________________________________________________MAIN_________________________________________________
public static void main(String[] args) {
guiform finestra = new guiform();
}
//SCRIVI NUMERO __________________________________________SCRIVI NUMERO___________________________________________________
private class clickBottone implements ActionListener {
@Override
public void actionPerformed(ActionEvent actionEvent) {
JButton bottone = (JButton)actionEvent.getSource();
if(operazioneAccesaFlag)
textField.setText("");
operazioneAccesaFlag=false;
textField.setText(textField.getText()+bottone.getText());
}
}
//FINISCI OPERAZIONE____________________________________FINISCI OPERAZIONE____________________________________________
public void finisciOperazione(int numero, String segno, String operazione){
switch(operazione){
case "addizione":
risultato=risultato+numero;
inserisciTesto(segno);
break;
case "sottrazione":
if(primaOperazioneFlag){
risultato=numero;
inserisciTesto(segno);
primaOperazioneFlag=false;}
else
{risultato=risultato-numero;
inserisciTesto(segno);}
case "moltiplicazione":
if(risultato==0){
risultato=numero;}
else{
risultato=risultato*numero;
// }
inserisciTesto(segno);
case "divisione":
if(numero!=0){
risultato=risultato/numero;
inserisciTesto(segno);
}else{
JOptionPane.showMessageDialog(null,"Divisione nulla");
}
}
}
//INSERISCI TESTO ________________________________________INSERISCI TESTO________________________________________
private void inserisciTesto(String segno) {
testo=testo+numero+segno;
textArea.setText(testo);
textField.setText(String.valueOf(risultato));
}
//LISTENER RISULTATO_________________________________LISTENER RISULTATO____________________________________________
private class clickRisultato implements ActionListener {
@Override
public void actionPerformed(ActionEvent actionEvent) {
numero=Integer.parseInt(textField.getText());
if(addizioneFlag)
finisciOperazione(numero,"","addizione");
if(sottrazioneFlag)
finisciOperazione(numero,"","sottrazione");
if(moltiplicazioneFlag)
finisciOperazione(numero,"","moltiplicazione");
if(divisioneFlag)
finisciOperazione(numero,"","divisione");
testo="";
addizioneFlag=false;
sottrazioneFlag=false;
moltiplicazioneFlag=false;
divisioneFlag=false;
primaOperazioneFlag=true;
}
}
//LISTENER ADDIZIONE________________________________LISTENER ADDIZIONE______________________________________________
private class clickAddizione implements ActionListener {
@Override
public void actionPerformed(ActionEvent actionEvent) {
numero=Integer.parseInt(textField.getText());
String segno ="+";
if(sottrazioneFlag){
finisciOperazione(numero,segno,"sottrazione");
}else if(moltiplicazioneFlag){
finisciOperazione(numero,segno,"moltiplicazione");
}else if(divisioneFlag){
finisciOperazione(numero,segno,"divisione");
}else{
finisciOperazione(numero,segno,"addizione");
}
sottrazioneFlag=false;
moltiplicazioneFlag=false;
divisioneFlag=false;
addizioneFlag=true;
primaOperazioneFlag=false;
operazioneAccesaFlag=true;
}
}
//LISTENER SOTTRAZIONE______________________________LISTENER SOTTRAZIONE____________________________________________
private class clickSottrazione implements ActionListener {
@Override
public void actionPerformed(ActionEvent actionEvent) {
numero=Integer.parseInt(textField.getText());
String segno="-";
if(addizioneFlag){
finisciOperazione(numero,segno,"addizione");
}else if(moltiplicazioneFlag){
finisciOperazione(numero,segno,"moltiplicazione");
}else if(divisioneFlag){
finisciOperazione(numero,segno,"divisione");
}else if(sottrazioneFlag){
finisciOperazione(numero,segno,"sottrazione");
}else{
risultato=numero;
inserisciTesto(segno);
}
sottrazioneFlag=true;
moltiplicazioneFlag=false;
divisioneFlag=false;
addizioneFlag=false;
primaOperazioneFlag=false;
operazioneAccesaFlag=true;
}
}
//LISTENER DIVISIONE______________________________________________________LISTENER DIVISIONE__________________________________________________________
private class clickDivisione implements ActionListener {
@Override
public void actionPerformed(ActionEvent actionEvent) {
numero=Integer.parseInt(textField.getText());
String segno="/";
if(addizioneFlag){
finisciOperazione(numero,segno,"addizione");
}else if(moltiplicazioneFlag){
finisciOperazione(numero,segno,"moltiplicazione");
}else if(sottrazioneFlag){
finisciOperazione(numero,segno,"sottrazione");
}else{
finisciOperazione(numero,segno,"divisione");
}
sottrazioneFlag=false;
moltiplicazioneFlag=false;
divisioneFlag=true;
addizioneFlag=false;
primaOperazioneFlag=false;
operazioneAccesaFlag=true;
}
}
//LISTENER MOLTIPLICAZIONE____________________________LISTENER MOLTIPLICAZIONE_________________________________________
private class clickMoltiplicazione implements ActionListener {
@Override
public void actionPerformed(ActionEvent actionEvent) {
numero=Integer.parseInt(textField.getText());
String segno ="X";
if(sottrazioneFlag){
finisciOperazione(numero,segno,"sottrazione");
}else if(addizioneFlag){
finisciOperazione(numero,segno,"addizione");
}else if(divisioneFlag){
finisciOperazione(numero,segno,"divisione");
}else{
finisciOperazione(numero,segno,"moltiplicazione");
}
sottrazioneFlag=false;
moltiplicazioneFlag=true;
divisioneFlag=false;
addizioneFlag=false;
primaOperazioneFlag=false;
operazioneAccesaFlag=true;
}
}
}