Προς το περιεχόμενο

Java Calculator


Προτεινόμενες αναρτήσεις

Δημοσ.

Μήπως έχει κανένας πρόχειρο τον κώδικα κατασκευής calculator σε java. Κυρίως θέλω να μάθω για την αντιστοίχιση κουμπιών σε text area.

Δημοσ.

Έψαξα αλλά βρήκα μόνο με applet και ήταν και λίγο σύνθετα για αυτά που ξέρω. Δεν νομίζω οτι χρειάζεται να γινονται υποδείξεις για search μέσω google εννοείται οτι πριν ποστάρεις για κάτι που ζητάς έχεις ψάξει και δεν έμεινες ικανοποιημένος.

Δημοσ.

De mas to aneferes omws sto arxiko sou post. 8a mporousan ta 2 post na htan 1 ;) Epishs 8a mporouses na mas analyseis die3odikotera to provlhma, ka8ws den katalavain ti ennoeis me thn frash "antistoixish koumpiwn se text area".

Δημοσ.

>
import java.awt.*;
import java.lang.*;
import java.applet.Applet;

//===================
// Calculator Applet
//===================
public class Calc extends java.applet.Applet
{
   //--------
   // member
   //--------
   TextField  text;
   String   sText1, sText2;
   double   dReg1, dReg2, dMem;
   String   sOperator;
   boolean  isFixReg;
   //-------------
   // constructor
   //-------------
   public Calc()
   {
       Panel pFrame = new Panel();
       pFrame.setLayout(new FlowLayout());

       text = new TextField("");
       text.setForeground(Color.yellow);
       text.setEditable(false);

       Panel pCalc = new Panel();
       pCalc.setLayout(new BorderLayout(0, 10));
       pCalc.add("North", text);

       pFrame.add("Center", pCalc);

       Dimension dSize= pCalc.size();
       dSize.width = dSize.width + 20;
       dSize.height = dSize.height + 20;
       pFrame.resize(dSize);
       
       Panel pKey = new Panel();
       pKey.setLayout(new GridLayout(5, 4, 5, 5));
       add("Center", pKey);
       pKey.add(new Button("C"));
       pKey.add(new Button("MR"));
       pKey.add(new Button("M-"));
       pKey.add(new Button("M+"));
       pKey.add(new Button("7"));
       pKey.add(new Button("8"));
       pKey.add(new Button("9"));
       pKey.add(new Button("/"));
       pKey.add(new Button("4"));
       pKey.add(new Button("5"));
       pKey.add(new Button("6"));
       pKey.add(new Button("*"));
       pKey.add(new Button("1"));
       pKey.add(new Button("2"));
       pKey.add(new Button("3"));
       pKey.add(new Button("-"));
       pKey.add(new Button("0"));
       pKey.add(new Button("."));
       pKey.add(new Button("="));
       pKey.add(new Button("+"));

       pCalc.add("South", pKey);

       setLayout(new BorderLayout(0, 0));
       add("North", pFrame);
       setBackground(Color.darkGray);

       dReg1 = 0.0d;
       dReg2 = 0.0d;
       dMem = 0.0d;
       sOperator = "";
       text.setText("0");
       isFixReg = true;
   }
   //---------------
   // event handler
   //---------------
   public boolean action(Event evt, Object arg)
   {
       //
       // numeric key input
       //
       if ("C".equals(arg))
       {
           dReg1 = 0.0d;
           dReg2 = 0.0d;
           sOperator = "";
           text.setText("0");
           isFixReg = true;
       }
       else if (("0".equals(arg)) | ("1".equals(arg)) | ("2".equals(arg))
              | ("3".equals(arg)) | ("4".equals(arg)) | ("5".equals(arg))
              | ("6".equals(arg)) | ("7".equals(arg)) | ("8".equals(arg))
              | ("9".equals(arg)) | (".".equals(arg)))
       {
           if (isFixReg)
               sText2 = (String) arg;
           else 
               sText2 = text.getText() + arg;
           text.setText(sText2);
           isFixReg = false;
       }
       //
       // operations
       //
       else if (("+".equals(arg)) | ("-".equals(arg))
              | ("*".equals(arg)) | ("/".equals(arg)) | ("=".equals(arg)))
       {
           sText1 = text.getText();
           dReg2 = (Double.valueOf(sText1)).doubleValue();
           dReg1 = Calculation(sOperator, dReg1, dReg2);
           Double dTemp = new Double(dReg1);
           sText2 = dTemp.toString();
           text.setText(sText2);
           sOperator = (String) arg;
           isFixReg = true;
       }
       //
       // memory read operation
       //
       else if ("MR".equals(arg))
       {
           Double dTemp = new Double(dMem);
           sText2 = dTemp.toString();
           text.setText(sText2);
           sOperator = "";
           isFixReg = true;
       }
       //
       // memory add operation
       //
       else if ("M+".equals(arg))
       {
           sText1 = text.getText();
           dReg2 = (Double.valueOf(sText1)).doubleValue();
           dReg1 = Calculation(sOperator, dReg1, dReg2);
           Double dTemp = new Double(dReg1);
           sText2 = dTemp.toString();
           text.setText(sText2);
           dMem = dMem + dReg1;
           sOperator = "";
           isFixReg = true;
       }
       //
       // memory sub operation
       //
       else if ("M-".equals(arg))
       {
           sText1 = text.getText();
           dReg2 = (Double.valueOf(sText1)).doubleValue();
           dReg1 = Calculation(sOperator, dReg1, dReg2);
           Double dTemp = new Double(dReg1);
           sText2 = dTemp.toString();
           text.setText(sText2);
           dMem = dMem - dReg1;
           sOperator = "";
           isFixReg = true;
       }
       return true;
   }
   //-------------
   // Calculation
   //-------------
   private double Calculation(String sOperator, double dReg1, double dReg2)
   {
            if ("+".equals(sOperator)) dReg1 = dReg1 + dReg2;
       else if ("-".equals(sOperator)) dReg1 = dReg1 - dReg2;
       else if ("*".equals(sOperator)) dReg1 = dReg1 * dReg2;
       else if ("/".equals(sOperator)) dReg1 = dReg1 / dReg2;
       else dReg1 = dReg2;
       return dReg1;
   }
}

:wink:

Δημοσ.
De mas to aneferes omws sto arxiko sou post. 8a mporousan ta 2 post na htan 1 ;) Epishs 8a mporouses na mas analyseis die3odikotera to provlhma, ka8ws den katalavain ti ennoeis me thn frash "antistoixish koumpiwn se text area".

Νομίζω ότι είμουν σαφής ήθελα να δώ κώδικα απο calculator και αυτό ζήτησα. Δεν χρειαζόταν να αναλύσω το τι ενέργειες έκανα πριν και πια προβλήματα αντιμετώπισα.Anyway ευχαριστώ για την βοήθεια...

  • 7 χρόνια αργότερα...
Δημοσ.

Αυτό τι κάνει βρε παιδιά BorderLayout(0, 10)???

 

Εγώ ξέρω ότι το BorderLayout χωρίζει το frame σε 5 περιοχές. Το (0,10) τι κάνει?

Δημοσ.

Αυτό τι κάνει βρε παιδιά BorderLayout(0, 10)???

 

Εγώ ξέρω ότι το BorderLayout χωρίζει το frame σε 5 περιοχές. Το (0,10) τι κάνει?

Τα κενά ανάμεσα σε αυτες τις περιοχές .

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...