четвер, 19 липня 2012 р.

Java навчання


Java - компілятор чи інтерпритатор?
Початковий код будь-якої програми на мові Java представляється звичайними текстовими файлами, які можуть бути створені у будь-якому текстовому редакторові або спеціалізованому засобі розробки і мають розширення .java. Ці файли подаються на вхід Java- компілятора, який транслює їх в спеціальний Java байт-код. Саме цей компактний і ефективний набір інструкцій підтримується JVM і явля­ется невід'ємною частиною платформи Java.

Результат роботи компілятора зберігається у бінарних файлах з розширенням .class. Java- додаток, що складається з таких файлів, подається на вхід віртуальній машині, яка починає їх виконувати, або інтерпретувати, оскільки сама є програмою.
Для роботи yеобхiдно скачати
http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html

Компiлюємо в папцi C:\Program Files\Java\jdk1.7.0_05\bin або встановлюємо path C:\Program Files\Java\jdk1.7.0_05\bin

javac  програма.java
запускаємо без розширення
java  програма

Типи даних, що використовуються в мові JAVA


 В мові java є дві категорії типів даних:





  • примітивні;
  • похідні.

  •     У Java існує всього 8 типів даних, які не є об'єк­тами. Вони були визначені в першої версії і ніколи не мінялись. Це п'ять цілочисельних типів: byte, short, int, long, до них також відносять символьний char. Потім два дробові типи float та double і, нако­нец, булевий тип boolean. Такі типи називаються простими, або при­мітивними(від англійського primitive), Усі інші типи - об'єктні або посилальні(англ. reference).
    Наприклад, при оголошенні змінної, яка повинна містити ціле число, використовуємо  ключеве слово int:
     int iVar; 

        Проте для представлення дуже великих чисел може виявитися недостатнім той об'єм пам'яті, який резервується компілятором для змінних з типом int. Для таких змінних краще підстрахуватися і використати тип long :
     long  lVar; 
         В таблице 1 приведены наиболее важные элементарные типы данных. Для каждого типа данных в таблице приведен также диапазон значений, которые могут принимать переменные указанного типа.


      1   char Окремі символи: ‘a’, ‘!’, ‘\n’
    2 byte Ціле число: від -128 до 127
    3 short Ціле число: від -32 768 до 32 767
    4 int Ціле число: від -2 147 483 648 до 2 147 483 647
    5 long Ціле число: від -9223372036854775808 до 9223372036854775807
    6 float Число з плаваючою крапкою: від -3.40e+38 до +3.40e+38
    7 double Дробове число з плаваючою крапкою: от -1.79e+308 до +1.79e+308
    8 boolean Логічні значення : true (істина) або false (хибність)


         Иногда элементарных типов данных не достаточно, тогда вводятся самостоятельно определенные типы данных (производные типы данных). Это достигается с помощью определение соответствующих классов. Такие типы данных называются классами, и мы будем сталкиваться с ними на протяжении всей книги.
        Большое количество таких классов содержаться в пакетах java. В качестве примера можно привести класс String, который содержаться в пакете java.lang. Этот класс содержит большое количество методов, полезных при работе с символьными строками. Для декларирования переменной с типом String мы действуем обычным образом, как и при декларировании переменных, с элементарными типами данных. Сначала идет указание типа данных, затем – имя переменной:

    String сString;

    Переменные (локальные переменные и поля класса)

    Здесь мы будем рассматривать только простые переменные Java.
    В зависимости от того, где объявлена переменная, это может быть:

    • Локальная переменная – вспомогательная временная переменная, существующая только пво время выполнения определенной функции или блока операторов - строк кода или
    • Переменная класса (или поле класса– более точный термин Java) – переменная, присутствующая в любом объекте класса, время жизни которой равно времени жизни объекта.

    Локальные (временные) переменные

    Локальные переменные объявляются в таких разделах Java кода, как блок, оператор цикла или тело функции. они создаются и инициализируются при начале выполнения секции кода и уничтожаются после завершения его выполнения. Объявление состоит из типа переменной, имени и необязательной инициализации. Объявление представляет собой оператор (statement), поэтому его нужно заканчивать точкой с запятой. Например:

    double sum = 0; //вещественная переменная sum, изначально равна 0
    int k; //целочисленная переменная k, не проинициализирована
    String msg = ok ? "OK" : "Not OK"; //текстовая переменная msg, проинициализированная выражением
    Локальные переменные можно объявить и использовать в тех полях AnyLogic, в которых задаются действия (последовательности операторов - строк кода), таких, как Действие при запуске класса активного объекта, Действие событий и переходов, Действие при входе и Действие при выходе состояний, свойствах Действие при входе и Действие при выходе библиотечных объектов. В приведенном на рисунке ниже примере переменные sum и p объявляются в коде действия события endOfYear и существуют только во время выполнения этого фрагмента кода.

    Локальные переменные, объявленные в коде Действия события

    Переменные класса (поля)

    Переменные Java (поля) класса активного объекта являются частью "памяти" или "состояния" активных объектов. Они могут быть объявлены как графически (с помощью элемента простая переменная), так и в коде.
    Переменная активного объекта, объявленная в графическом редакторе
    На рисунке выше переменная income типа int объявлена в классе активного объекта (или эксперимента). Тип доступа - public, поэтому она будет доступна отовсюду. Начальное значение: 10000. Графическое объявление переменной эквивалентно строке кода класса, которую можно написать, например, в Дополнительном коде класса на странице Дополнительные свойств класса, см. рисунок ниже:
    Аналогичная переменная, объявленная в Дополнительном коде класса
    Графическое объявление переменной позволяет Вам визуально объединять их вместе со схожими по назначению функциями и объектами, а также просматривать и изменять значение переменной в режиме выполнения модели одним щелчком.

    Конвертация строки в числовой формат на языке Java производится так:

    • byte b = Byte.parseByte("234");
    • short s = Short.parseShort("234");
    • int i = Integer.parseInt("234");
    • long l = Long.parseLong("234");
    • float f = Float.parseFloat("234.4");
    • double d = Double.parseDouble("233.4e10");
    • int i = Integer.parseInt("38 parrots"); // не будет работать!!!
    Один большой нюанс: по сравнению с javascript в Java названия функций хоть и начинаются с приставки "parse", но фактически требуют точного соблюдения формата числа. То-есть если в строке не соблюдается формат числа (присутствуют лишние символы, либо строка вообще пустая), то вызывается исключение.

    Что касается обратного преобразования, то можно сделать вот так:
    • String str = Integer.toString(100500);
    • String str = 100500 + "";

    Складні типи

    Всі складні типи складаються з більш простих. Ті, в свою чергу, ще більш простих. Поки, нарешті, справа не доходить до самих примітивних, неподільних типів.
    Їх так і називають – примітивні типи. Наприклад, int – це один з примітивних типів, а String – це вже складний тип, зберігає свої дані у вигляді таблиці символів (де кожен символ - це примітивний тип char).

    Складні типи утворюються з простих шляхом угруповання. Такі типи ми називаємо класами. Коли ми описуємо у програмі новий клас – це означає, що ми оголошуємо новий складний складений тип, дані якого будуть або іншими складними типами, або примітивними типами.


    Код на Java
    Опис
    public class Person
    {
       String name;
       int age;
    }
    Об’явили новий складний тип – Person.
    Його дані – це змінна
    name типу String (складний тип) і змінна age типу int(примітивний тип)
    public class Rectangle
    {
       int x, y, width, height;
    }
    Об’явили новий складний тип – Rectangle.
    Він складається із четирьох змінних примітивного типу – int.
    public class Cat
    {
       Person owner;
       Rectangle territory;
       int age;
       String name;
    }
    Об’явили новий складний – Cat. У нього є змінні:
    owner, складний тип Person
    territory, складний тип Rectangle
    - age, примітивний тип int
    name, складний тип String


    Т. к. великі (складні) типи містять у собі багато маленьких (примітивних), то їх об'єкти займають багато пам'яті. Більше, ніж звичайні змінні примітивних типів. Іноді набагато більше. Присвоювання таких змінних виконувалося дуже довго і вимагало копіювання великих обсягів пам'яті. Тому змінні складних типів зберігають у собі не сам об'єкт, а лише посилання на нього! Тобто чотирьохбайтовий адрес. Цього вистачає, щоб можна було звертатися до даних цих об'єктів. Всю складність, пов'язану з цим, бере на себе Java-машина.

    Код на Java
    Опис
    String s;
    String s = null;
    Еквівалентні записи.
    Person person;
    person = new Person();
    person = null;
    Створили змінну person, її значення null.
    Занесли в її адрес нового створеного об’єкту.
    Присвоїли змінній посилання null.
    Cat cat = new Cat();


    cat.owner = new Person();


    cat.owner.name = "God";
    Створили об’єкт Cat, занесли його ссилку в змінну cat. cat.owner дорівнює null.
    Занесли в cat.owner ссилку на новостворений об’єкт Person.
    cat.owner.name поки ще null. 


    cat.owner.name присвоїли значення – God.

    Змінні діляться на два типи: примітивні і ссилочні. Примітивні типи у себе всередині зберігають значення, а ссилочні – посилання на об'єкт. Примітивні типи – це int, char, boolean і ще трохи, а ссилочні типи – це всі інші, і утворюються вони за допомогою класів.

    Код на Java
    Опис
    Cat cat;
    Оголошує посилальну змінну з ім'ям cat і типомCat.. Значення змінної cat – посилання null.
    new Cat();
    Створює об'єкт типу Cat.
    Cat cat = new Cat();
    Створює посилальну змінну типу cat cat.
    Створює новий об'єкт типу Cat. Присвоює в змінну cat посилання на новостворений об'єкт.
    Cat murzik = new Cat();
    Cat vaska = new Cat();
    Створюються два об'єкта, посилання на які присвоюються двом різним змінним відповідно.
    Cat murzik = new Cat();
    Cat vaska = new Cat();


    vaska = murzik;
    Створюються два об'єкта, посилання на які присвоюються двом різним змінним.

    Потім, змінній vaska присвоюється посилання на об'єкт, що міститься в змінній murzik.. Тепер обидві змінних посилаються на перший створений об'єкт.
    (На другий більше ніхто не посилається – другий об'єкт вважається сміттям)
    Cat murzik = new Cat();
    Cat vaska = null;

    vaska = murzik;

    murzik = null;
    Створюється один об'єкт типу Cat, посилання на який заноситься в першу змінну (murzik), друга змінна (vaska) містить порожню (нульову) посилання.

    Обидві змінні посилаються на один об'єкт.

    Тепер тільки vaska посилається на об'єкт, але не murzik.


    1 Модифікатор «public»

    До змінної, методу або класу, позначеного модифікатором public, можна звертатися з будь-якого місця програми. Це найвища ступінь відкритості - ніяких обмежень немає.

    2 Модифікатор «private»

    До змінної або методу, позначеному модифікатором private, можна звертатися тільки з того ж класу, де він оголошений. Для всіх інших класів позначений метод або змінна - невидимі і «як би не існують». Це найвища ступінь закритості – тільки свій клас.

    3 Без модифікатора

    Якщо змінна або метод не помічені ніяким модифікатором, то вважається, що вони помічені «модифікатором за замовчуванням». Змінні або методи з таким модифікатором (тобто взагалі без якого-небудь) видно всім класам пакету, в якому вони оголошені. І тільки їм. Цей модифікатор ще іноді називають «package», натякаючи, що доступ до змінних і методів відкритий для всього пакету, в якому знаходиться їх клас



    Арифметические выражения

    Арифметичні операції

    Java підтримує наступні арифметичні операції:
    Оператор Операція
    + Додавання
    Віднімання
    * Множення
    / Ділення
    % Залишок від цілочисельного ділення

    Пріоритет операцій множення і ділення вище, ніж додавання і віднімання. Операції з однаковими пріоритетами виконуються зліва направо. Ви можете змінювати порядок виконання операцій з допомогою дужок:
    a + b / c ≡ a + ( b / c )
    a * b – c ≡ ( a * b ) – c
    a / b / c ≡ ( a / b ) / c
    Рекомендується завжди задавати порядок виконання операцій з допомогою дужок - в цьому випадку Вам не доведеться думати про те, пріоритет якої операції вище.

    Стоит уделить особое внимание целочисленному делению.
    Результат деления в Java зависит от типов операндов. Если оба операнда - целые числа, то результат будет тоже целым. Поэтому непреднамеренное использование целочисленного деления может привести к существенной потере точности. Чтобы произвести обычное деление, получив в качестве результата вещественное значение, в Java нужно явно указать, что хотя бы один из операндов является вещественным числом.
    Например:
    3 / 2 ≡ 1
    2 / 3 ≡ 0
    потому что это целочисленное деление. Однако
    3 / 2. ≡ 1.5
    2.0 / 3 ≡ 0.66666666…
    потому что 2. и 2.0 являются вещественными числами. Если k и n являются переменными типа int, то k/n будет производить целочисленное деление и выдавать в качестве результата целое число (значение типа int). Чтобы получить вещественный результат при делении двух целочисленных переменных (или выражений), Вы должны заставить Java рассматривать хотя бы с одну переменную как вещественную. Это делается с помощью приведения типов: для этого Вам нужно перед именем переменной написать в скобках имя типа, к которому Вы хотите преобразовать значение, например, (double)k/n даст вещественный результат деления (значение типа double).
    Целочисленное деление часто используется вместе с операцией взятия остатка от деления для получения номера строки и столбца элемента по его порядковому номеру. Предположим, что есть коллекция из 600 элементов, задающая, скажем, места в театре, и мы хотим условно расположить эти места в 20 рядов, каждый из которых содержит по 30 мест. В этом случае получить номер ряда и номер места в этом ряду можно будет с помощью следующих выражений:
    Номер места: index % 30 (остаток от деления индекса на 30: 0 - 29)
    Номер ряда: index / 30 (целочисленное деление индекса на 30: 0 - 19)
    где порядковый номер (индекс) index принимает значения от 0 до 599. Например, место с индексом 247 будет соответствовать месту 7 в ряду 8.
    У операции возведения в степень в Java нет собственного оператора (если Вы напишете a^b, то это будет означать операцию побитового ИЛИ). Чтобы выполнить возведение в степень, нужно вызвать функцию pow():

    pow( a, b ) ≡ ab


    Java підтримує кілька спрощених операторів для часто використовуваних операцій з числовими змінними, тому до арифметичних операторів мови Java, які визначені для всіх числових типів, відносяться: + (додавання і унарний плюс) + = (додавання з присвоюванням), - (віднімання і унарний мінус), -= (віднімання з присвоюванням), * (множення), *= (множення з присвоюванням), / (ділення), /= (розподіл із присвоюванням), % (залишок від ділення або ділення по модулю), %= (залишок від ділення з присвоюванням), ++ (інкремент) -- (декремент).

    Будь-який оператор з присвоюванням з погляду одержуваного результату еквівалентний виконання відповідної операції з подальшим присвоюванням, але працює зазвичай швидше: a @= b еквівалентно а = a @ b (тут символ " @ " означає будь-яку з арифметичних бінарних операцій).

    i++  ≡  i = i+1 (збільшення значення i на 1)
    i––  ≡  i = i–1 (зменшення значення i на 1)
    a += 100.0  ≡  a = a + 100.0 (збільшення значення a на 100.0)
    b –= 14  ≡  b = b – 14 (зменшення значення b на 14)

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

    Приклад з арифметичними операціями:

        public class Math1 { 
        public Math1() { 
        } 
        public static void main(String[] args) { 
        int a=5;
        int b=2;
        int c=25;
        int k;
        double r;
        k=a+b;
        r=Math.pow(3.,2.);
        System.out.println("a=" + a); 
        System.out.println("b=" + b); 
        System.out.println("c=" + c); 
        System.out.println("Syma a+b=" +  (a+b)); 
        System.out.println("Сума:  а+b="+k);
        System.out.println("Не вірна сума a+b=" +  a+b); 
        System.out.println("Добуток:  a*b="+a*b);
        System.out.println("Результат д?лення ц?лочисельних:  а/b="+a/b); //дробова частина вiдкидається
        System.out.println("Залишок по модулю:  a%b="+a%b);
        System.out.println("Cтепiнь:  a^b="+Math.pow(a,b));
        System.out.println("Корiнь: sqrt(с) ="+Math.sqrt(c));
        } 
        } 

    Задача 1(про прямокутний трикутник). Нехай задано катети прямокутного трикутника a=3, b=4. Знайти периметр і площу трикутника.

    class triangle {
    public triangle() {
    }
    public static void main(String[] args) {
       double a=3, b=4, c,p,s;                      //Задаємо довжини сторін
       c= Math.sqrt(a*a+b*b);                    //Обчислюємо гіпотенузу
       p=a+b+c;                                           //обчислюємо периметр
       s=a*b/2;                                             //обчислюэмо площу
    System.out.println("p=" + p);               //виводимо значення периметра
    System.out.println("s=" + s);                //та площі на екран
    System.out.println("виконав Юхим.В");
    }
    }


    1.1. Вывести на экран с точностью два знака число Пи.

    Ответ: Решил что надо вычислить число Пи.

    1. public class Math2 {  
    2. public Math2() {  
    3. }  
    4. public static void main(String[] args) {  
    5. long n=1;  
    6. double sum,pi;  
    7. sum=1;  
    8. for (n=1; n<100000;n++)  
    9. {  
    10.   sum=sum*(4*(n*n))/((4*(n*n))-1);  
    11. }  
    12. pi=sum*2;  
    13. System.out.println("Число Пи=" + String.format("%.2f", pi));  
    14. }  
    15. }  

    1.2. Вывести на экран с точностью два знака число е (основание натурального логарифма).

    1. public class Math2 {  
    2. public Math2() {  
    3. }  
    4. public static void main(String[] args) {  
    5. long n;  
    6. double sum,e,fuc;  
    7. sum=1;  
    8. fuc=1;  
    9. for (n=1; n<20;n++)>  
    10.         sum=sum+1/fuc;  
    11. }  
    12. e=sum;  
    13. System.out.println("Чиcло e=" + String.format("%.2f", e));  
    14. }  

    1.3. Составить программу вывода на экран числа. вводимого с клавиатуры. Выводимому числу должно предшествовать сообщение “Вы ввели число”.

    1. import java.io.*;  
    2. public class Les2 {  
    3.     public static void main(String[] args) throws IOException   
    4.         {  
    5.         char c;  
    6.         BufferedReader kb=new BufferedReader(new InputStreamReader(System.in));  
    7.             c=(char)kb.read();   
    8.           System.out.println("Вы ввели число "+c);  
    9.       }  
    10. }  

    1.5. Вывести на одной строке числа 1, 13 и 49 с одним пробелом между ними.

    1. public class Num {  
    2.     public Num() {  
    3.     }  
    4.     public static void main(String[] args) {  
    5.         System.out.println(1+" "+13+" "+49);  
    6.     }  
    7. }      

    1.7. Составить программу вывода на экран в одну строку трех любых чисел с двумя пробелами между ними.

    1. import java.io.*;  
    2. public class Num {  
    3.     public static void main(String[] args) throws IOException   
    4.         {  
    5.         char n1,n2,n3;  
    6.         BufferedReader kb=new BufferedReader(new InputStreamReader(System.in));  
    7.             n1=(char)kb.read();   
    8.             n2=(char)kb.read();   
    9.             n3=(char)kb.read();   
    10.         System.out.println(n1+"   "+n2+"   "+n3);  
    11.         }  
    12. }  

    1.9. Вывести на экран числа 50 и 10 одно под другим.

    1. public class Num {  
    2.     public Num() {  
    3.     }  
    4.     public static void main(String[] args) {  
    5.         System.out.println(50);  
    6.         System.out.println(10);  
    7.   
    8.     }  
    9. }      

    1.25. Дана сторона квадрата. Найти его периметр.

    1. import java.io.*;  
    2. public class Kvadrat {  
    3.     public static void main(String[] args) throws IOException   
    4.         {  
    5.         String n1;  
    6.         BufferedReader kb=new BufferedReader(new InputStreamReader(System.in));  
    7.             n1=kb.readLine();   
    8.             int kv=Integer.parseInt(n1); // преоброзование типа String в int  
    9.             System.out.println("Периметр квадрата="+kv*4);  
    10.         }  
    11. }  

    1.29. Дан радиус окружности. Найти длину окружности и площадь круга.

    1. import java.io.*;  
    2. public class Krug {  
    3.     public static void main(String[] args) throws IOException   
    4.         {  
    5.         String n1;  
    6.         double Pi=3.14;  
    7.         BufferedReader kb=new BufferedReader(new InputStreamReader(System.in));  
    8.             n1=kb.readLine();   
    9.             int r=Integer.parseInt(n1); // преоброзование типа String в int  
    10.             System.out.println("Длина окружности="+2*Pi*r);  
    11.             System.out.println("Площядь круга="+Pi*r*r);  
    12.         }  
    13. }  

    1.49. Составить программу обмена значениями двух переменных величин.

    1. public class obmen {  
    2.     public obmen() {  
    3.     }  
    4.       public static void main(String[] args) {  
    5.         int a=10,b=20;  
    6.         a=a+b;  
    7.         b=a-b;  
    8.         a=a-b;  
    9.         System.out.println("a="+a+" "+"b="+b);  
    10.        }  
    11. }  

    1.51. Дано вещественное число получить используя только операцию умножение
    а) а^4 за две операции;

    1. public class obmen2 {  
    2.     public obmen2() {  
    3.     }  
    4.       public static void main(String[] args) {  
    5. long a=2,b;  
    6.             b=a*a;  
    7.             a=b*b;          
    8. System.out.println("a="+a);  
    9.       }  
    10. }  

    б) а^6 за три операции;

    1. public class obmen2 {  
    2.     public obmen2() {  
    3.     }  
    4.       public static void main(String[] args) {  
    5.         long a=2,b;  
    6.         b=a*a;  
    7.         a=b*b;  
    8.         a=a*b;  
    9.         System.out.println("a="+a);  
    10.        }  
    11. }  

    в) а^7 за четыре операции;

    1. public class obmen2 {  
    2.     public obmen2() {  
    3.     }  
    4.       public static void main(String[] args) {  
    5.         long a=2,b,c;  
    6.         c=a;  
    7.         b=a*a;  
    8.         a=b*b;  
    9.         a=a*b;  
    10.         a=a*c;  
    11.         System.out.println("a="+a);  
    12.        }  
    13. }  

    г) а^8 за три операции;

    1. public class obmen2 {  
    2.     public obmen2() {  
    3.     }  
    4.       public static void main(String[] args) {  
    5.         long a=2,b,c;  
    6.         c=a;  
    7.         b=a*a;  
    8.         a=b*b;  
    9.         a=a*a;  
    10.    
    11.      System.out.println("a="+a);  
    12.        }  
    13. }  
    З величинами цілих типів можна виконувати додаткові дії. До побітовим (або поразрядным) операторам мови Java відносяться наступні: ~ (додаток), & (побітове І), &= (побітове І з присвоюванням), | (побітове Або), |= (побітове Або з присвоюванням), ^ (виключає Або), ^= (виключає Або з присвоюванням), << (зсув вліво), <<= (зсув вліво з присвоюванням), >> (зсув вправо), >>= (зсув вправо з присвоюванням), >>> (зсув вправо з розмноженням нуля) і >>>= (зсув вправо з присвоюванням з розмноженням нуля).


    Результати операцій двійкового доповнення, Або, що виключає Або і І виходять шляхом виконання над кожним з бітів операндів (операндів) дій у відповідності з таблицею

    Таблица : Бітові операції
    a b ~a a|b a^b a&b
    0 0 1 0 0 0
    1 0 0 1 1 0
    0 1 1 1 1 0
    1 1 0 1 0 1

     Наприклад, 4^5 дорівнює 1 (бо двійкові представлення цих чисел є відповідно 100 і 101).

    У операторів зсуву другий аргумент показує кількість розрядів, на яку треба здійснити зсув у двійковому поданні першого операнда вліво ( << ) або вправо (для>> та >>>).


        int i = 3, j = 100; // i = 3, j = 100
        int k = i << 4;     // k = 48
        int m = j >> 2;     // m = 25
     
    Легко зрозуміти, що зсув вліво на розрядів еквівалентний множенню на , а зсув вправо -- поділом на те ж число. 
     

     

    Целочисленная арифметика

    Целочисленная арифметика

    2.1. Дано расстояние в сантиметрах. Найти число полных метров в нем.
    1. public class Meter {  
    2.       public Meter() {  
    3.     }  
    4.       public static void main(String[] args) {  
    5.       int cm=2345;  
    6.       int mtr=0;  
    7.       System.out.println("Total meter(First variant)="+cm/100);  
    8.       while (cm>100) {  
    9.           cm=cm-100;   
    10.          mtr=mtr+1;  
    11.     }  
    12.       System.out.println("Total meters(Second variant)="+mtr);  
    13.    }   
    14. }  

    2.10. Дано двузначное число. Найти сумму его цифр:
    1. public class Sum {  
    2.   public Sum() {  
    3.     }  
    4.     public static void main(String[] args) {  
    5.     int num=99;  
    6.     int First_num=num/10;  
    7.     int Second_num=num%10;  
    8.     int Sum_Num=First_num+Second_num;  
    9.     System.out.println("Sum Num="+Sum_Num);  
    10.     }  
    11. }  

    2.11. Дано двузначное число. Получить число, Образованное при перестановке цифр заданного числа.
    1. public class Sum {  
    2.   public Sum() {  
    3.     }  
    4.     public static void main(String[] args) {  
    5.     int num=48;  
    6.     int First_num=num/10;  
    7.     int Second_num=num%10;  
    8.     int New_First_num=Second_num*10;  
    9.     int Change_Num=New_First_num+First_num;  
    10.     System.out.println("Change_Num="+Change_Num);  
    11.     }  
    12. }  

    2.23. Дано натуральное число п (п > 999). Найти:
    а) число сотен в нем;
    б) число тысяч в нем.
    1. public class Natur {  
    2.        public Natur() {  
    3.     }  
    4.              public static void main(String[] args) {  
    5.       int nat=7536, one,  dec,  hun, taus,  rez;  
    6.       one=nat%10;   
    7.       dec=(nat/10)%10;   
    8.       hun=(nat/100)%10;   
    9.       taus=nat/1000;  
    10.       rez=taus*1000+hun*100+dec*10+one;   
    11.       System.out.println("Цифра единиц числа="+one) ;  
    12.       System.out.println("Цифра десятков числа="+dec) ;  
    13.        System.out.println("Цифра сотен числа="+hun );  
    14.        System.out.println("Цифра тысяч числа="+taus );  
    15.       System.out.println("Проверка числа="+rez) ;  
    16.     }  
    17. }  

    2.34. даны цифры двух целых чисел: двузначного а2а1 и однозначного b, где а1 — число единиц, а2— число десятков. Получить цифры числа, равного сумме заданных чисел (известно, что это число двузначное). Слагаемое— двузначное число и число-результат не определять; условный оператор не использовать.
    1. public class Natur {  
    2.        public Natur() {  
    3.     }  
    4.              public static void main(String[] args) {  
    5.       int a2=6,a1=4,b=3;  
    6.       System.out.println("Первая цифра="+(a2*10+a1+b)/10);  
    7.       System.out.println("Вторая цифра="+(a2*10+a1+b)%10);  
    8.     }