Инструкция пользователя:

      Калькулятор предназначен для счета в 16-ти ричной системе счисления. Кнопки A, B, C, D, E, F предназначены для ввода чисел от 10 до 15 (в 16-ти ричной системе). Калькулятор выполняет основные арифметические функции: +,-,*,/. Работа с калькулятором аналогична работе с обыкновеннм калькулятором.

Исходный текст калькулятора:

import java.awt.*;
import java.applet.*;
import java.lang.*;
import java.awt.event.*;

public class Calculator extends Applet { 
  public void init() {
  setLayout(new BorderLayout());
  Calculation Calc = new Calculation();
  add("Center",Calc);
  }
}

/* ActionListener   интерфейс слушателя
   actionPerformed  метод слушателя
   ActionEvent      порождаемое событие
*/
class ProCalculator implements ActionListener { 
  private static String num_str = "";
  private static String operation = null;
  private static long num = 0; 
  private static long accum = 0;
  private static int flag = 0;
  public void actionPerformed(ActionEvent e) {  
    String str = e.getActionCommand();
    if((Character.isDigit(str.charAt(0))) 
       ||(str=="A")||(str=="B")
       ||(str=="C")||(str=="D")
       ||(str=="E")||(str=="F")) {
        num_str += str;
        Calculation.io.setText(num_str);
    }
    else {
      if(num_str.length() >= 1) {
        System.out.println("num_str = "+num_str);
        try {
          num = Long.parseLong(num_str,16);
        } 
        catch(Exception q) {
          System.out.println("Found Exception!"+q);  
        }
        num_str = "";
        if(operation != null) {
          Calculation.io.setText("");
          switch(operation.charAt(0)) {
          case '+': accum += num; break;
          case '-': accum -= num; break;
          case '*': accum *= num; break;
          case '/': accum /= num; break;
          }
        }
        else {
          accum = num;
        }
        Calculation.io.setText("");
        operation = str;
      }
      if(str.equals("=")) {
        String s = Long.toString(accum,16);
        Calculation.io.setText(s.toUpperCase());
        operation = null;
      }
      if(str.equals("CE")) {
        num_str = "";
        operation = null;
        num = 0;
        accum = 0;
        String s = Long.toString(accum);
        Calculation.io.setText(s);
      }
      if(flag==1) {
        Calculation.io.setText("");
        operation = str;
        flag = 0;
        num = accum;
      }
    }
  }
}

class Calculation extends Panel {
  ProCalculator pc;
  Calculation() {
    pc = new ProCalculator();
    DrawCalc(pc); 
  }

   public static TextField io = null;

   public boolean keyDown(Event evt,int key) {
    key = key - 48;
    String st = Integer.toString(key);
           System.out.println(key);   
    return true;
   }
   private void DrawCalc(ProCalculator dc) {

     io = new TextField(30);
     io.setEditable(false); 
     io.setBackground(Color.green);
     io.setForeground(Color.black);
     GridBagConstraints gbc = new GridBagConstraints();
     setLayout(new GridBagLayout());
     gbc.insets = new Insets(2,2,2,2);
     gbc.gridx = 0;
     gbc.gridy = 0;
     gbc.gridwidth = 10;
     gbc.anchor = GridBagConstraints.CENTER;
   
     Panel buttonPanel=new Panel();
     Panel textPanel = new Panel();

     buttonPanel.setLayout(new GridLayout(4,6));
     ProCalculator buttonListener = new ProCalculator();

     Button b1 = new Button("7"); 
     b1.addActionListener(buttonListener);
     buttonPanel.add(b1);

     Button b2 = new Button("8"); 
     b2.addActionListener(buttonListener);
     buttonPanel.add(b2);

     Button b3 = new Button("9"); 
     b3.addActionListener(buttonListener);
     buttonPanel.add(b3);

     Button b4 = new Button("/"); 
     b4.addActionListener(buttonListener);
     buttonPanel.add(b4);

     Button b5 = new Button("A"); 
     b5.addActionListener(buttonListener);
     buttonPanel.add(b5);

     Button b6 = new Button("CE"); 
     b6.addActionListener(buttonListener);
     buttonPanel.add(b6);

     Button b7 = new Button("4"); 
     b7.addActionListener(buttonListener);
     buttonPanel.add(b7);

     Button b8 = new Button("5"); 
     b8.addActionListener(buttonListener);
     buttonPanel.add(b8);

     Button b9 = new Button("6"); 
     b9.addActionListener(buttonListener);
     buttonPanel.add(b9);

     Button b10 = new Button("*"); 
     b10.addActionListener(buttonListener);
     buttonPanel.add(b10);

     Button b11 = new Button("B"); 
     b11.addActionListener(buttonListener);
     buttonPanel.add(b11);

     Button b12 = new Button("E"); 
     b12.addActionListener(buttonListener);
     buttonPanel.add(b12);

     Button b13 = new Button("1"); 
     b13.addActionListener(buttonListener);
     buttonPanel.add(b13);

     Button b14 = new Button("2"); 
     b14.addActionListener(buttonListener);
     buttonPanel.add(b14);

     Button b15 = new Button("3"); 
     b15.addActionListener(buttonListener);
     buttonPanel.add(b15);

     Button b16 = new Button("-"); 
     b16.addActionListener(buttonListener);
     buttonPanel.add(b16);

     Button b17 = new Button("C"); 
     b17.addActionListener(buttonListener);
     buttonPanel.add(b17);

     Button b18 = new Button("F"); 
     b18.addActionListener(buttonListener);
     buttonPanel.add(b18);

     Button b19 = new Button("0"); 
     b19.addActionListener(buttonListener);
     buttonPanel.add(b19);

     Button b20 = new Button("."); 
     b20.addActionListener(buttonListener);
     buttonPanel.add(b20);

     Button b21 = new Button("="); 
     b21.addActionListener(buttonListener);
     buttonPanel.add(b21);

     Button b22 = new Button("+"); 
     b22.addActionListener(buttonListener);
     buttonPanel.add(b22);

     Button b23 = new Button("D"); 
     b23.addActionListener(buttonListener);
     buttonPanel.add(b23);


     textPanel.add(io,gbc);
     setLayout(new BorderLayout());
     add("North", textPanel);
     add("Center",buttonPanel);
   }
}

Блок-схема алгоритма:



Rambler's Top100