1.Калькулятор

Даная программа предназначена для выполнения тех же действий , которые выполняет обычный простой калькулятор . В нем находится текстовое поле , предназначенное для ввода 10-х чисел .

На панели расположены 20 кнопок : 10 из них это цифры , а остальные 10 – выполняют такие арифметические действия как:

сложение „ + ” ,

вычитание „ - ” ,

деление „ / ” ,

умножение „ * ” ,

вычисление квадратного корня „ sqrt ,

изменение знака „ +/-” , ввод

 вещественного числа „ . ” ,

получение результата „ = ” ,

вычисление процента „ % ” ,

сброс „ clear .

 

                    

 

2. Описание библиотек и структуры данных

Программа использует следующие пакеты: java.io.* .* содержит классы для различных типов ввода-вывода , java.lang.* содержит классы ядра языка (типы, работа со строками, тригонометрические функции, обработка исключений, легковесные процессы) , java.awt.* содержит классы для работы с графикой, текстом, окнами и GUI , java.awt.event.* содержит классы и интерфейсы для обработки событий.

Программа реализуется виде класса Calculator , который расширяет стандартный класс Frame и реализует интерфейс ActionListener .

Класс Calculator содержит поля :

private char savedActionсимвол команды .

private boolean clear – переменная, которая показывает, надо ли очищать текстовое поле.

private float savedValue – первый операнд бинарного оператора.

private TextField display – переменная , с помощью которой создается однострочная область для ввода чисел .

private Panel buttonsPanel – переменная , с помощью которой создается панель

private Button buttons[] – массив кнопок

3. Описание методов

public Calculator() -Конструктор класса .

public Insets insets() - Используется для того, чтобы вставлять в объект Panel границы , напоминающие горизонтальные и вертикальные промежутки между объектами , которые делает диспетчер размещения .

public void windowClosing(WindowEvent ev) - Метод предназначенный для обработки клавиши закрытия окна

private void setupGUI() - Метод который рисует все элементы управления : текстовое поле , кнопки .

public void actionPerformed( ActionEvent e ) - Метод который предназначен для обработки события нажатия кнопки

private void calculate(char cmd) - Метод в котором производятся вычисления

public static void main(String args[]) - Метод предназначенный для запуска программы из командной строки

4. Некоторые описания

Создаем текстовое поле и новый объект new Panel(), с помощью класса GridLayout (4,5) задаем количество строк и столбцов

private void setupGUI() {

this.setLayout( new BorderLayout() );

display = new TextField("0");

this.add(display, BorderLayout.NORTH);

buttonsPanel = new Panel();

buttonsPanel.setLayout( new GridLayout(4,5) );

this.add( buttonsPanel, BorderLayout.CENTER );

Создаем массив из 20 кнопок и помещаем их на панель , с помощью метода setLabel присваиваем каждой кнопке надпись.

buttons = new Button[20];

for(int i=0; i<buttons.length; i++){

buttons[i] = new Button();

buttons[i].addActionListener( this );

buttonsPanel.add( buttons[i] );  }

buttons[0].setLabel("7");

buttons[1].setLabel("8");

private void calculate(char cmd)

  {

    float curValue;

    float newValue = 0;

При введении в текстовое поле буквы  - считаем, что это НОЛЬ

try{

      curValue = (new Float(display.getText())).floatValue();

    }

    catch(NumberFormatException ep)

    {

         curValue = 0;

  }

 

Этот фрагмент программы предназначен для операций с одним аргументом

    if( savedAction == 0 )

    {

      clear = true;

      savedAction = cmd;

 

switch(savedAction)

      {

       case 's':

                  newValue = (float)Math.sqrt( (double) curValue);

                  savedAction = 0;

                  display.setText(""+newValue);

                  break;

       case 'c':

                  newValue = 0;

                  savedAction = 0;

                  display.setText(""+newValue);

                  break;

       case '[':

                  newValue = - curValue;

                  savedAction = 0;

                  display.setText(""+newValue);

                  break;

      }

    }

Этот фрагмент программы предназначен для операций с двумя аргументами

      switch (savedAction)

      {

        case '/':

                  newValue = savedValue / curValue;

                  break;

        case '*':

                  newValue = savedValue * curValue;

                  break;

        case '-':

                  newValue = savedValue - curValue;

                  break;

        case '+':

                  newValue = savedValue + curValue;

                  break;

        case '%':

                  newValue = savedValue % curValue;

                  break;

      }

В данном фрагменте программы обрабатывается событие закрытия окна .

this.addWindowListener(new WindowAdapter(){

    public void windowClosing(WindowEvent ev){

         System.exit(0); }

     }

Список литературы

1.     URL: http://ru.sun.com/java/start/examples/examples.html

2.     URL: http://ru.sun.com/java/books/online/index.html

3.     URL: http://www.internet-technologies.ru/books/book_12.html

   4.  URL: http://www.megapolis.org/internet/web_manual/web41.html