Код магнитолы

JS - телефон

JS - часы

Оппозиция в России ?

Россия и Украина

Мысли в слух...

Российская...власть ?

Skype

Создаём сайт

Любимые сериалы


На главную

Java-арифмометр

С добавлением кодеков в созданный проигрыватель возникла небольшая задержка, которую можно заполнить тренировкой по закреплению усвоенного материала. Сделаем апплет-арифмометр.
Арифметика в Java представлена... Смело можно пользоватся следующими методами:
 
Math.abs(n) — возвращает модуль числа n.
Math.round(n) — возвращает целое число, ближайшее к вещественному числу n (округляет n).
Math.ceil(n) — возвращает ближайшее к числу n справа число с нулевой дробной частью (например, Math.ceil(3.4) в результате вернёт 4.0).
Math.cos(n), Math.sin(n), Math.tan(n) — тригонометрические функции sin, cos и tg от аргумента n, указанного в радианах.
Math.acos(n), Math.asin(n), Math.atan(n) — обратные тригонометрические функции, возвращают угол в радианах.
Math.toDegrees(n) — возвращает градусную меру угла в n радианов.
Math.toRadians(n) — возвращает радианную меру угла в n градусов.
Math.sqrt(n) — возвращает квадратный корень из n.
Math.pow(n, b) — возвращает значение степенной функции n в степени b, основание и показатель степени могут быть вещественными.
Math.log(n) — возвращает значение натурального логарифма числа n.
Math.log10(n) — возвращает значение десятичного логарифма числа n.
Math.PI — число «пи», с точностью в 15 десятичных знаков.
Math.E— число Неппера (основание экспоненциальной функции), с точностью в 15 десятичных знаков.
 
                        рис.8
Как мы видим - арифметикой в Java занимается class Math (не каламбур).
Использовать всё вышеперечисленное мы не будем, ограничимся четыремя основными действиями (+,-,* и :) плюс - извлечение квадратного корня (КК), возведение в квадрат (n2) и в куб(n3):



Компоновка исходного файла - стандартная (рис.8.1). Используемые кнопки активируются за счёт анонимных классов. На первый взгляд - это несколько громоздко, зато - надёжно. Для удобства понимания - классы развёрнуты в столбик. Код рабочего апплет-арифмометра выглядит более компактно.
Код не сложный, просто - много повторений. Для разнообразия - кнопки расцвечены, а символы на них - увеличены:

button = new JButton("<html><h1><font color=\"цвет\">символ на кнопке"); 
button.setBackground(Color.цвет);
Можно было задействовать цикл для кнопок, разделить файл на два...Не думаю, что это упростит программу. Однако, кое-чему следует уделить особое внимание...

...доступность переменных:

Создавая программу мы заявили несколько переменных, в том числе три простых и одну строчную. Хотя, это не совсем переменная:
JTextField display - это экран для отображения набраных чисел;
char select = ' ' - это переменная хранящая тип арифметической операции;
double currentResult = ' ' - здесь будет хранится всё, что мы наберём;
double displayValue = ' ' - здесь будет хранится набранное число, приведённое к десятичному основанию;
String displayText - здесь будет хранится набранное число, состоящее из цифр и символа "точка" - это строчная переменная;
В созданной нами программе существует несколько областей видимости переменных (названия - условны):
глобальная (класс: 009-222)
локальная (например, метод-конструктор: 018-207)
внутренняя (например, анонимный класс: 065-067) и т.д.
Другими словами, область видимости - это всё, что находится внутри фигурных скобок {...}, а единственный способ её создания - вложенность. Следует помнить, что переменные (как объекты) доступны только в пределах области видимости, где они заявлены: объекты, заявленные во внешней области, будут "видны" коду, определённому во внутренней области он может их использовать. В обратную сторону - это не работает. А самое главное - эти правила не распространяются на значение переменной: значение переменной, заявленное во внешней области, недоступно коду находящемуся во внутренней области.Попытка использования внешних значений переменных внутренним кодом приводит к следующему заявлению компилятора - ошибка: переменная ... доступна из внутреннего класса; необходимо декларировать финал.
***
Файл мы скомпилируем и... заархивируем. В результате этих действий - наш арифмометр будет выглядеть так:



Вещь это не сложная, к локальным файлам не лезет. Думаю - будет работать. Помните: кнопки левой колонки работают сразу, а действия кнопок в правой колонке - необходимо подтверждать ("=").

продолжить...
...вернутся