Инструкция пользователя:
Калькулятор предназначен для счета в 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);
}
}
Блок-схема алгоритма: