Для введення даних використовується клас
Scanner
із бібліотеки пакетів Java. Цей клас треба імпортувати у тій програмі, де він використовуватиметься. Це робиться до початку відкритого класу у коді програми. У класі є методи читання чергового символу заданого типу зі стандартного потоку введення, і навіть перевірки існування такого символу. Для роботи з потоком введення необхідно створити об'єкт класу Scanner , при створенні вказавши, з яким потоком введення він буде пов'язаний. Стандартний потік введення (клавіатура) Java представлений об'єктом — System.in
. А стандартний потік виведення (дисплей) – вже знайомим вам об'єктом System.out
. Є ще стандартний потік для виведення помилок System.err
, але робота з ним виходить за рамки нашого курсу.
import java.util.Scanner; // импортируем класс
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // создаём об'єкт класса Scanner
int i = 2;
System.out.print("Введите целое число: ");
if(sc.hasNextInt()) { // возвращает истину если с потока ввода можно считать целое число
i = sc.nextInt(); // считывает целое число с потока ввода и сохраняем в переменную
System.out.println(i*2);
} else {
System.out.println("Вы ввели не целое число");
}
}
}
Метод hasNextDouble()
, застосований об'єкту класу Scanner
, перевіряє, чи можна вважати з потоку введення дійсне число типу double
, а метод nextDouble()
- зчитує його. Якщо спробувати рахувати значення без попередньої перевірки, під час виконання програми можна отримати помилку (налагоджувач заздалегідь таку помилку не виявить). Наприклад, спробуйте у поданій далі програмі ввести якесь речове число:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double i = sc.nextDouble(); // если ввести букву s, то случится ошибка во время исполнения
System.out.println(i/3);
}
}
Є також спосіб 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()
, що перевіряє чи залишабося в потоці введення якісь символи. У класі String
існує маса корисних методів, які можна застосовувати до рядків (перед ім'ям методу вказуватимемо тип того значення, яке він повертає):
int length()
— повертає довжину рядка (кількість символів у ньому);boolean isEmpty()
- перевіряє, чи порожній рядок;String replace(a, b)
- Повертає рядок, де символ a (літерал або змінна типу char) замінений на символ b;String toLowerCase()
- Повертає рядок, де всі символи вихідного рядка перетворені до малих;String toUpperCase()
— повертає рядок, де всі символи вихідного рядка перетворені на великі;boolean equals(s)
— повертає істинну, якщо рядок до якого застосований метод, збігається з рядком s вказаним у аргументі методу (за допомогою оператора==
рядка порівнювати не можна, як і будь-які інші об'єкти);int indexOf(ch)
— повертає індекс символу ch у рядку (індекс – це порядковий номер символу, але нумеруватися символи починають з нуля). Якщо символ не буде знайдено, то поверне -1. Якщо символ зустрічається кілька разів, то поверне індекс його першого входження.int lastIndexOf(ch)
— аналогічний до попереднього методу, але повертає індекс останнього входження, якщо смивол зустрівся у рядку кілька разів.int indexOf(ch,n)
— повертає індекс символу ch у рядку, але починає перевірку з індексу n (індекс – це порядковий номер символу, але нумеруватися символи починають з нуля).char charAt(n)
— повертає код символу, що знаходиться в рядку під індексом n (індекс – це порядковий номер символу, але нумеруватися символи починають з нуля).
public class Main {
public static void main(String[] args) {
String s1 = "firefox";
System.out.println(s1.toUpperCase()); // выведет «FIREFOX»
String s2 = s1.replace('o', 'a');
System.out.println(s2); // выведет «firefax»
System.out.println(s2.charAt(1)); // выведет «i»
int i;
i = s1.length();
System.out.println(i); // выведет 7
i = s1.indexOf('f');
System.out.println(i); // выведет 0
i = s1.indexOf('r');
System.out.println(i); // выведет 2
i = s1.lastIndexOf('f');
System.out.println(i); // выведет 4
i = s1.indexOf('t');
System.out.println(i); // выведет -1
i = s1.indexOf('r',3);
System.out.println(i); // выведет -1
}
}
Приклад програми, яка виведе на екран індекси всіх прогалин у рядку, введений користувачем з клавіатури:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
for(int i=0; i < s.length(); i++) {
if(s.charAt(i) == ' ') {
System.out.println(i);
}
}
}
}
Посилання на першоджерело: Потоки введення/виводу та рядки в Java
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ