1 of 45

1

Лекція №6. Потоки введення/виведення, рядки та числові методи в Java

Викладач: PhD, Юлія Назар

Програмування на java

2 of 45

2

agenda

  • Рядки в Java. Клас String
  • Потоки введення та виведення. Клас Scanner
  • Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

3 of 45

3

1. Рядки в Java. Клас String

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

4 of 45

4

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Рядок – це послідовність символів. У Java рядки реалізовані за допомогою трьох основних класів модуля java.base пакету java.lang, таких як: String, StringBuilder, StringBuffer.

Основна частина даних, які обробляють реальні програми, є текстовою інформацією. Тому клас String є одним з найчастіше використовуваних у Java.

При цьому слід зазначити низку особливостей класу String:

  • є загальнодоступним (не потрібно імпортувати пакет)
  • є фіналізованим, тобто не може мати нащадків
  • реалізує інтерфейси SerializableComparable<String>CharSequence
  • об'єкт класу String є рядком, а також є незмінним або немодифікованим (immutable).

5 of 45

5

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Рядки в Java – це послідовність символів Юнікоду ("Абвгґд"), інакше кажучи – послідовність символів.

В java рядки представляють собою окремий об'єктний тип (String – це об’єкт).

Оголошення змінної і присвоєння їх рядка відбувається у традиційний спосіб:

String str = "Це рядок";

6 of 45

6

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

�String str = "Java";�

==

�String str2 = new String("Java");

7 of 45

7

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Конкатенація – це поєднання двох рядків, що здійснюється за допомогою оператора "+". Приклад:

String str = "Це рядок";

String str = "Це"+" рядок";

В результаті програма видасть аналогічний результат при виведенні як першої так і другої стрічки.

8 of 45

8

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

При використанні конкатенації рядків з іншими типами даних відбувається автоматичне приведення до типу String:

public class Main {

 

public static void main(String[] args) {

String str = "цифра " + 5; //String + int

//дає String "цифра 5"

System.out.println(str);

}

}

9 of 45

9

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

В java об'єкти класу String не можна змінювати. На перший погляд — це додає проблем, але насправді це не так.

Не можна змінювати сам рядок в пам'яті комп'ютера, але змінній, яка посилається на певний рядок, можна призначити інший рядок. Приклад:

String str = "Це";

String str2 = "рядок";

String str3 = "555";

str = str3; //так можна

str = str + " " + str2; //і так можна

Якщо ж все ж таки необхідна маніпуляція з рядком напряму, використовують споріднений клас StringBuffer — корисний, при роботі з великими об'ємами текстових даних, читання з файлу тощо.

10 of 45

10

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

11 of 45

11

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Для здійснення різноманітних операцій зі стрічками (пошук, заміна тощо) в класі String існує чималий набір методів. Декілька прикладів:

Визначення довжини рядка – метод length():

Результат: 8.

public class Main {

 

public static void main(String[] args) {

String str = "Це рядок";

int strLength = str.length();

int str2Length = "Це рядок".length();

//можна і так

System.out.println(strLength);

System.out.println(str2Length);

}

}

12 of 45

12

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Для порівняння рядків на рівність використовують метод equals():

public class Main {

 

public static void main(String[] args) {

String str1 = "Hello";

String str2 = str1.substring(0,3)+ "p!";

System.out.println(str1.equals(str2));

}

}

Метод equals() повертає true, якщо стрічки однакові (рівні). Результатом наведеного прикладу буде false.

Замість змінних str1 та str2 можливе використання рядкових констант, наприклад:

"Hello".equals(str2);

13 of 45

13

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Згаданий метод порівнює рядки з врахування регістру символів. Для того, щоб не враховувався регістр при порівнянні існує метод equalsIgnoreCase():

"Hello".equalsIgnoreCase("hello");

Не рекомендовано використання оператору == з метою перевірки рядків на рівність. Застосування цього оператора дозволятиме лише перевірити адресу розташування рядків в пам’яті. Результат може бути неоднозначним.

14 of 45

14

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Клас String в Java містить понад 50 методів.

Методи класу String

Тип�повернення

Назва методу та його аргументи

Опис

char

charAt(int index)

Повертає char значення за вказаним індексом

int

codePointAt(int index)

Повертає символ (Unicode code point) за вказаним індексом

int

codePointBefore(int index)

Повертає символ (Unicode code point) перед вказаним індексом

int

codePointCount(int beginIndex, int endIndex)

Повертає кількість кодових точок Unicode у зазначеному інтервалі в рядку

int

compareTo(String anotherString)

Порівнює два рядки лексикографічно

int

compareToIgnoreCase(String str)

Порівнює два рядки лексикографічно, ігноруючи різницю в регістрах літер

String

concat(String str)

Приєднує зазначений рядок str в кінець рядка

boolean

contains(CharSequence s)

Повертає true, тільки якщо рядок містить зазначену послідовність значень char

15 of 45

15

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Методи класу String

boolean

contentEquals(CharSequence cs)

Порівнює рядок із зазначеною послідовністю символів(CharSequence)

boolean

endsWith(String suffix)

Перевіряє чи рядок закінчується зазначеним суфіксом

boolean

equals(Object anObject)

Порівнює рядок із зазначеним об'єктом

boolean

equalsIgnoreCase(String anotherString)

Порівнює рядок з іншим рядком, ігноруючи регістр

byte[]

getBytes()

Кодує рядок у послідовність байт використовуючи символьний набір(charset) по замовчуванню, результат зберігається у новому байтовому масиві

byte[]

getBytes(Charset charset)

Кодує рядок у послідовність байт використовуючи наданий символьний набір(charset), результат зберігається у новий байтовий масив

byte[]

getBytes(String charsetName)

кодує рядок у послідовність байт використовуючи названий символьний набір, результат зберігається у новому байтовому масиві

void

getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

Копіює символи з рядка у символьний масив

int

hashCode()

Повертає ХЕШ-код для рядка

16 of 45

16

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Методи класу String

int

indexOf(int ch)

Повертає індекс першого входження зазначеного символу в рядок

int

indexOf(int ch, int fromIndex)

Повертає індекс символу у рядку починаючи пошук із зазначеного індексу

int

indexOf(String str)

Повертає індекс першого знаходження підрядка у рядку

int

indexOf(String str, int fromIndex)

Повертає індекс в рядку підрядка, починаючи пошук із зазначеної позиції

boolean

isEmpty()

Повертає true, тільки тоді, якщо довжина(length()) становить 0.

int

lastIndexOf(int ch)

Повертає індекс останнього входження зазначеного символу в рядку

int

lastIndexOf(int ch, int fromIndex)

Повертає індекс останнього входження зазначеного символу, шукаючи його із зазначеної позиції в рядку

int

lastIndexOf(String str)

Повертає індекс останнього входження зазначеного підрядка

int

lastIndexOf(String str, int fromIndex)

Повертає індекс останнього входження зазначеного підрядка, шукаючи його із зазначеного індексу у рядку

int

length()

Повертає довжину даного рядка

17 of 45

17

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Методи класу String

boolean

matches(String regex)

Говорить чи відповідає даний рядок заданому регулярному виразу

String

replace(char oldChar, char newChar)

Повертає новий рядок заміняючи усі входження символу(oldChar) в рядку на новий символ (newChar)

String

replace(CharSequence target, CharSequence replacement)

Заміняє в рядку підрядок target новою послідовністю replacement

String

replaceAll(String regex, String replacement)

Заміняє кожен підрядок в рядку, що співпадає з регулярним виразом(regex) новим підрядком(replacement)

String

replaceFirst(String regex, String replacement)

Заміняє перший підрядок, що відповідає заданому регулярному виразу на підрядок для заміни

String[]

split(String regex)

Розбиває рядок за певним правилом поданим у регулярному виразі

String[]

split(String regex, int limit)

Розбиває рядок за певним правилом поданим у регулярному виразі

boolean

startsWith(String prefix)

Перевіряє чи поточний рядок починається з заданого префікса

String

substring(int beginIndex)

Повертає підрядок з поточного рядка

String

substring(int beginIndex, int endIndex)

Повертає підрядок з поточного рядка

char[]

toCharArray()

Перетворює рядок у новий символьний масив

18 of 45

18

Рядки в Java. Клас String

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Методи класу String

String

toLowerCase()

Перетворює усі символи рядка у нижній регістер використовуючи locale правило по замовчуванню

String

toLowerCase(Locale locale)

Перетворює усі символи рядка у нижній регістр використовуючи правило Locale.

String

toUpperCase()

Конвертує всі символи рядка у верхній регістер використовуючи locale правило по замовчуванню

String

toUpperCase(Locale locale)

Перетворює усі символи рядка у верхній регістер використовуюче правило подане у Locale.

String

trim()

Повертає копію рядка усуваючи пробіли спереду і ззаду рядка

static String

valueOf(boolean b)

Повертає рядкове представлення аргументу boolean типу

static String

valueOf(char c)

Повертає рядкове представлення char аргументу

static String

valueOf(char[] data)

Повертає рядкове представлення масиву типу char

static String

valueOf(double d)

Повертає рядкове представлення double аргументу

static String

valueOf(float f)

Повертає рядкове представлення float аргументу

static String

valueOf(int i)

Повертає рядкове представлення int аргументу.

static String

valueOf(long l)

Повертає рядкове представлення аргументу типу long

static String

valueOf(Object obj)

Повертає представлення об'єкту у вигляді рядка

19 of 45

19

2. Потоки введення та виведення. Клас Scanner

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

20 of 45

20

Потоки введення та виведення. Клас Scanner

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Сухарик

Для введення даних в Java використовують клас Scanner. Для початку роботи з класом його необхідно імпортувати в ту програму де він буде використовуватись.

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

21 of 45

21

Потоки введення та виведення. Клас Scanner

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Для роботи з потоком введення необхідно створити об’єкт (екземпляр) класу Scanner вказавши на те, з яким саме потоком введення він працюватиме.

Стандартний потік введення в Java представлений об’єктом – System.in.

Стандартний потік виведення – вже знайомим об’єктом – System.out.

22 of 45

22

Потоки введення та виведення. Клас Scanner

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Зчитування числа з потоку введення та збереження його у змінну:

import java.util.Scanner;

 

public class Main {

 

public static void main(String[] args) {

  Scanner sc = new Scanner (System.in); // створюєм об'єкт

// класу Scanner

int i ;

System.out.print ("Введеіть ціле число: ");

if (sc.hasNextInt()) { // повертає істину, якщо з потоку

// введення можна зчитати значення типу int

i = sc.nextInt(); // зчитує ціле число з потоку // введення та зберігає його у змінну

System.out.println(i * 2); // збільшуємо введене

// число удвічі

} else {

System.out.println(«Ви ввели не ціле");

}

}

}

23 of 45

23

Потоки введення та виведення. Клас Scanner

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Метод hasNextInt(): перевіряє чи можливо зчитати з потоку введення число типу int, а метод nextInt – зчитує його.

Якщо намагатись зчитувати значення без попередньої перевірки, то під час виконання програми можливо отримати помилку :

import java.util.Scanner;

 

public class Main {

 

public static void main(String[] args) {

 

Scanner sc = new Scanner(System.in);

double i = sc.nextDouble(); // якщо ввести літеру, отримаємо помилку в процесі виконання програми

System.out.println(i / 3);

}

}

24 of 45

24

Потоки введення та виведення. Клас Scanner

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Метод nextLine() дозволяє зчитувати послідовність символів (стрічку), а це означає, що отримане через цей метод значення потрібно зберігати в об’єкті класу String. Приклад:

import java.util.Scanner;

 

public class Main {

 

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String s1, s2;

s1 = sc.nextLine();

s2 = sc.nextLine();

System.out.println(s1 + s2);

}

}

З метою перевірки залишку у потоці введення будь-яких символів використовують метод hasNext().

25 of 45

25

3. Клас Math та його методи

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

26 of 45

26

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

В Java доступна множина готових (бібліотечних) класів та їх методів.

Основним класом, який містить в собі низку корисних числових методів (математичних функцій) є клас Math.

Для виклику методів класу Math потрібно вказати ключове слово класу, застосувати оператор «.», викликати відповідний метод та передати аргумент:

Math.abs(n);

27 of 45

27

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

1. Math.abs(n) — повертає модуль числа n.

public class Main {

 

public static void main(String[] args) {

 

int n = -5;

System.out.println(Math.abs(n)); // результат 5

}

}

28 of 45

28

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

2. Math.round(n) — повертає ціле число, яке ближче до числа n (округлює n).

public class Main {

 

public static void main(String[] args) {

 

double n = 5.5;

System.out.println(Math.round(n)); // результат 6

}

}

29 of 45

29

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

3. Math.toRadians — повертає число n зазначене в градусах у радіанах (переводить градуси в радіани).

public class Main {

 

public static void main(String[] args) {

 

double degrees = 30.0;

double radians = Math.toRadians(degrees);

System.out.println(radians); //результат 0.5236

}

}

30 of 45

30

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

4. Math.cos(n), Math.sin(n), Math.tan(n) — тригонометричні функції sin, cos та tg аргументу n, вказаного в радіанах .

public class Main {

 

public static void main(String[] args) {

 

double degr = 30.0;

double radians = Math.toRadians(degr);

System.out.println(Math.sin(radians)); // рез. 0.5

System.out.println(Math.cos(radians)); // рез. 0.8660

System.out.println(Math.tan(radians)); // рез. 0,5774

}

}

31 of 45

31

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

5. Math.toDegrees() — повертає значення кута в градусах заданого у радіанах.

public class Main {

 

public static void main(String[] args) {

 

double radiansSin = 0.4999;

double radiansCos = 0.8660;

double radiansTan = 0.5774;

double sin = Math.asin(radiansSin);

double cos = Math.acos(radiansCos);

double tan = Math.atan(radiansTan);

System.out.println(Math.toDegrees(sin)); // набл. 30

System.out.println(Math.toDegrees(cos)); // набл. 30

System.out.println(Math.toDegrees(tan)); // набл. 30

}

}

32 of 45

32

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

6. Math.sqrt(n) — повертає квадратний корінь числа n.

public class Main {

 

public static void main(String[] args) {

 

int i = 16;

int j = 9;

System.out.println(Math.sqrt(i)); // результат 4.0

System.out.println(Math.sqrt(j)); // результат 3.0

}

}

33 of 45

33

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

7. Math.pow(n, b) — повертає значення степеневої функції n в степені b.

public class Main {

 

public static void main(String[] args) {

 

for (int i = 1; i <= 10; i++) {

System.out.println(i + " в квадраті рівне " + Math.pow(i, 2));

}

}

}

Результат:

1 в квадраті рівне 1.0

2 в квадраті рівне 4.0

3 в квадраті рівне 9.0

4 в квадраті рівне 16.0

5 в квадраті рівне 25.0

6 в квадраті рівне 36.0

7 в квадраті рівне 49.0

8 в квадраті рівне 64.0

9 в квадраті рівне 81.0

10 в квадраті рівне 100.0

34 of 45

34

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

8. Math.min(n, m), Math.max(n, m) — повертає більше (менше) з двох аргументів.

public class Main {

 

public static void main(String[] args) {

 

System.out.println(Math.min(-12, -6)); // рез. -12

System.out.println(Math.max(5, 7.58)); // рез. 7.58

}

}

35 of 45

35

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Крім функцій в класі Math часто використовують дві константи:

1. Math.PI – число «Пі».

2. Math.E – число Неппера (основа експоненціальної функції).

36 of 45

36

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Метод Math.random() в Java використовують для генерації випадкових чисел в діапазоні від 0.0 до 1.0.

Стандартне застосування методу повертає double додатнє значення, в межах:

0.0 <= Math.random() < 1.0.

37 of 45

37

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

public class Main {

 

public static void main(String[] args) {

System.out.println("1 випадкове число: " + Math.random());// рез. 0.9362192604319092

System.out.println("2 випадкове число: " + Math.random());// рез. 0.12966189312475418

System.out.println("3 випадкове число: " + Math.random());// рез. 0.5066620737051696

}

}

38 of 45

38

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Існує можливість змінювати діапазон для генерування псевдовипадкових чисел.

Для того щоб згенерувати випадкове число в діапазоні від 0 до 10 необхідно представити метод в наступному вигляді:

public class Main {

 

public static void main(String[] args) {

System.out.println((Math.random() * 10));

// 2.268517446966837

System.out.println((Math.random() * 10));

// 3.8931582652735264

System.out.println((Math.random() * 10));

// 0.40220587435187194

}

}

39 of 45

39

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Для того, щоб згенерувати псевдовипадкове число в межах одиниці починаючи з цілого числа 3 (від 3 до 4), слід застосувати метод в наступному вигляді:

System.out.println(Math.random()+3);

40 of 45

40

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Для того, щоб збільшити проміжок, до прикладу від 0 до 5, необхідно застосувати:

System.out.println(Math.random()*5);

41 of 45

41

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Для виведення псевдовипадкового цілого числа слід застосовувати метод з явним приведенням:

System.out.println((int)(Math.random()*5));

42 of 45

42

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Для того, щоб змістити діапазон псевдовипадкових чисел, до прикладу в проміжок від 3 до 8:

System.out.println(Math.random()*5+3);

43 of 45

43

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Виведення цілого числа з проміжку від -5 до 5 проводиться наступним чином:

System.out.println((int)(Math.random()*11) - 5);

44 of 45

44

Клас Math та його методи

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

Для кращої наочності розглянемо послідовність перетворень необхідних для того, щоб отримати ціле випадкове число з відрізку [-1;3]:

Math.random()

 

 

 

[0; 1)

 

Math.random()*5

Перемноження кінців на 5 (розширення діапазону)

 

[0; 5)

 

(int)(Math.random()*5)

Відкидаємо цілу частину (всі значення >4)

 

[0; 4]

 

(int)(Math.random()*5)-1

Пересуваємо обидва кінці на 1 вліво

 

[-1; 3]

 

45 of 45

45

Q&A SESSION