1
Лекція №6. Потоки введення/виведення, рядки та числові методи в Java
Викладач: PhD, Юлія Назар
Програмування на java
2
agenda
THE STATE EMERGENCY SERVICEOF UKRAINE
LVIV STATE UNIVERSITY OF LIFE SAFETY
STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE
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
Рядки в 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:
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
Рядки в 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
Рядки в 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
Рядки в 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
Рядки в 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
Рядки в Java. Клас String
THE STATE EMERGENCY SERVICEOF UKRAINE
LVIV STATE UNIVERSITY OF LIFE SAFETY
STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE
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
Рядки в 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
Рядки в 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
Рядки в 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
Рядки в 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
Рядки в 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
Рядки в 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
Рядки в 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
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
Потоки введення та виведення. Клас Scanner
THE STATE EMERGENCY SERVICEOF UKRAINE
LVIV STATE UNIVERSITY OF LIFE SAFETY
STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE
Сухарик
Для введення даних в Java використовують клас Scanner. Для початку роботи з класом його необхідно імпортувати в ту програму де він буде використовуватись.
Клас містить в собі методи для зчитування чергового символу зі стандартного потоку введення, а також для перевірки існування такого символу.
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
Потоки введення та виведення. Клас 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
Потоки введення та виведення. Клас 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
Потоки введення та виведення. Клас 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
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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Клас 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
Q&A SESSION