Программирование мобильных телефонов на Java


Программирование мобильных телефонов

  • Введение
  • Глава 1. Устройство мобильных телефонов
  • Глава 2. Платформа Java 2 Micro Edition
  • Глава 3. Средства разработки мобильных приложений
  • Глава 4. Телефонные эмуляторы
  • Глава 5. Механизм работы приложений Java 2 ME
  • Глава 6. Классы пользовательского интерфейса
  • Глава 7. Программирование графики
  • Глава 8. Техника создания игр
  • Глава 9. Мобильная мультимедиа-библиотека
  • Заключение
  • Приложение 1. Основы языка Java
  • Приложение 2. Справочник по Java 2 Micro Edition

     

    Программирование на Java

  • Введение
  • Глава 1. Встроенные типы данных, операции над ними
  • Глава 2. Объектно-ориентированное программирование в Java
  • Глава 3. Пакеты и интерфейсы
  • Глава 4. Классы-оболочки
  • Глава 5. Работа со строками
  • Глава 6. Классы-коллекции
  • Глава 7. Классы-утилиты
  • Глава 8. Принципы построения графического интерфейса
  • Глава 9. Графические примитивы
  • Глава 10. Основные компоненты
  • Глава 11. Размещение компонентов
  • Глава 12. Обработка событий
  • Глава 13. Создание меню
  • Глава 14. Апплеты
  • Глава 15. Изображения и звук
  • Глава 16. Обработка исключительных ситуаций
  • Глава 17. Подпроцессы
  • Глава 18. Потоки ввода/вывода
  • Глава 19. Сетевые средства Java
  • Приложение. Развитие Java

  • 

    3fb01dc2


     

     

    Условный оператор

    Условный оператор (if-then-else statement) в языке Java записывается так:

    if (логВыр) оператор1 else оператор2

    и действует следующим образом. Сначала вычисляется логическое выражение логвыр. Если результат true, то действует оператор! и на этом действие условного оператора завершается, оператор2 не действует, далее будет выполняться следующий за if оператор. Если результат false, то действует оператор2, при этом оператор,! вообще не выполняется.

    Условный оператор может быть сокращенным (if-then statement):

    if (логВыр) оператор!

    и в случае false не выполняется ничего.

    Синтаксис языка не позволяет записывать несколько операторов ни в ветви then, ни в ветви else. При необходимости составляется блок операторов в фигурных скобках. Соглашения "Code Conventions" рекомендуют всегда использовать фигурные скобки и размещать оператор на нескольких строках с отступами, как в следующем примере:

    if (а < х) {

    х = а + b; } else {

    х = а — b; 

    }

    Это облегчает добавление операторов в каждую ветвь при изменении алгоритма. Мы не будем строго следовать этому правилу, чтобы не увеличивать объем книги.

    Очень часто одним из операторов является снова условный оператор, например:

    if (п == 0}{ 

    sign = 0;

    } else if (n < 0){

    sign = -1; 

    } else { 

    sign = 1;

    }

    При этом может возникнуть такая ситуация ("dangling else"):

    int ind = 5, х = 100;

    if (ind >= 10) if (ind <= 20) x = 0; else x = 1;

    Сохранит переменная х значение юо или станет равной 1? Здесь необходимо волевое решение, и общее для большинства языков, в. том числе и Java,. правило таково: ветвь else относится к ближайшему слева услдвиюif, не имеющему своей ветви else. Поэтому в нашем примере переменная х останется равной юо.

    Изменить этот порядок можно с помощью блока:

    if (ind > 10) {if (ind < 20) x = 0; else x = 1;}

    Вообще не стоит увлекаться сложными вложенными условными операторами. Проверки условий занимают много времени. По возможности лучше использовать логические операции, например, в нашем примере можно написать

    if (ind >= 10 && ind <= 20) х = 0; else х = 1;

    В листинге 1.4 вычисляются корни квадратного уравнения ах 2 + bх + с = 0 для любых коэффициентов, в том числе и нулевых.

    Листинг 1.4. Вычисление корней квадратного уравнения

    class QuadraticEquation{

    public static void main(String[] args){

    double a = 0.5, Ъ = -2.7, с = 3.5, d, eps=le-8; 

    if (Math.abs(a) < eps) 

    if (Math.abs(b) < eps)

    if (Math.abs(c) < eps) // Все коэффициенты равны нулю

    System.out.println("Решение —любое число"); 

    else

    System.out.println("Решений нет"); 

    else

    System.out.println("xl = x2 = " +(-c / b) ) ;

    else { // Коэффициенты не равны нулю 

    if((d = b**b — 4*a*c)< 0.0){ // Комплексные корни 

    d = 0.5 * Math.sqrt(-d) / a; 

    a = -0.5 * b/ a; 

    System.out.println("xl = " +a+ " +i " +d+

    ",x2 = " +a+ " -i " +d); 

    } else {

    // Вещественные корни

    d =0.5 * Math.sqrt(d) / a; 

    a = -0.5 * b / a;

    System.out.println("x1 = " + (a + d) + ", x2 = " +(a - d)); 

    }

    )

    }

    В этой программе использованы методы вычисления модуля absо и кш; ратного корня sqrt о вещественного числа из встроенного в Java API класса Math. Поскольку все вычисления-С вещественными числами производятся приближенно, мы считаем, что коэффициент уравнения равен нулю, если его модуль меньше 0,00000001. Обратите внимание на то, как в методе println о используется сцепление строк, и на то, как операция присваивания при вычислении дискриминанта вложена в логическое выражение.

    "Продвинутым" пользователям

    Вам уже хочется вводить коэффициенты а, b и с прямо с клавиатуры? Пожалуйста, используйте метод System, in. read (byte [ ] bt), но учтите, что этот метод записывает вводимые цифры в массив байтов bt в кодировке ASCII, в каждый байт по одной цифре. Массив байтов затем надо преобразовать в вещественное число, например, методом Double(new String(bt)).doubleValue0 . Непонятно? Но это еще не все, нужно обработать исключительные ситуации, которые могут возникнуть при вводе (см. главу 18).

     

    -
    



    Copyright © vzlom-1.ru 2020-2021