[Java] Строки, символы, динамические массивы
Покрытые темы
Таблица ASCII кодов - https://ru.wikipedia.org/wiki/ASCII
String name = scanner.nextLine(); // String - строка, по сути это массив состоящий из символов
int length = name.length(); // у строки можно спросить ее длину вызвав у нее метод length() (он возвращает целое число)
char firstChar; // char - примитивный тип представляющий какой бы то ни было символ
firstChar = name.charAt(0); // charAt - метод позволяющий считать символ строки по нужному индексу (как и с обычными массивами - с нуля)
System.out.println("В телефонной книге ваше имя на страничке на букву " + firstChar);
if (firstChar >= 'A' && firstChar <= 'Z') { // обратите внимание что СИМВОЛЫ - в одиночных кавычках
System.out.println("Буква заглавная!"); // а СТРОКИ - в двойных кавычках
}
System.out.println("a"); // а что тогда это такое? строка, т.е. двойные кавычки, просто она длины один - состоит из всего одного сивола
int charCode = (int) firstChar; // таким образом можно получить код символа (в таблице ASCII)
System.out.println("У символа " + firstChar + " ASCII-код: " + charCode);
int nextCode = charCode + 1; // посчитали следующий код
char nextSymbol = (char) nextCode; // таким образом можно преобразовать код в символ
System.out.println("Следующий символ в таблице: " + nextSymbol);
String stringValue = scanner.nextLine(); // считываем число от пользователя, но ввиде СТРОКИ!
int value = Integer.parseInt(stringValue); // таким образом можно преобразовать строку в число
int value2 = Integer.parseInt("10"); // так тоже можно, теперь в value2 хранится число 10
// Чтобы начать использовать динамические массивы так же как и со Scanner ранее - вам надо сначала подключить "библиотеку" описывающую эти массивы:
import java.util.ArrayList; // это должно быть в самом начале файла - ВНЕ main-функции
ArrayList<Integer> values = new ArrayList<Integer>(); // Таким образом создается динамический массив целых чисел
ArrayList<String> names = new ArrayList<String>(); // Таким образом создается динамический массив в котором каждый элемент - строка
// т.е. тип в динамическом массиве описывается в угловых скобочках
// если вы хотите хранить примитивные типы, то вместо int - Integer, вместо double - Double
int arrayLength = values.size(); // у массива можно узнать его размер вызвав метод size() (в переводе на русский - размер), изначально он равен нулю
values.add(10); // таким образом можно добавить элемент в конец массива (и т.о. увеличить его размер на один элемент)
values.add(20);
values.add(30);
System.out.println(values.size()); // выведет 3 - т.к. такой теперь размер динамического массива (ведь мы добавили три элемента)
int value = values.get(1); // таким образом можно запросить элемент по индексу, как и с обычными массивами - индексация с нуля
// т.е. в value лежит число 20
Задание
Задание на дом - выполнить задачки в http://mdl.sch239.net/ :
1) Считайте строку.
Если первый символ - заглавная английская буква: выведите “Capital letter!”, если маленькая английская буква: выведите “Lowercase letter!”, если цифра: “Digit!”, если пробел: “Space!”, иначе - “Something else!”.
Затем выведите размер строки ввиде “Length of the string: N”.
2) Выведите английский алфавит. Сначала заглавными буквами в одну строку, а затем на второй строке - маленькими. Пожалуйста не копируйте просто строку правильного ответа, сделайте это на базе изменения ASCII-кодов символов и циклов (чтобы пробежать по всем буквам алфавита).
3) Пользователь вводит строки одну за другой.
Напишите цикл while
. Если он введет строку “exit” - воспользуйтесь командой break
чтобы выйти из цикла.
В остальных случаях - преобразуйте строку в число и добавьте его в динамический массив целых чисел.
После этого считайте еще одно число X от пользователя и выведите количество чисел в массиве которые меньше или равны X.
Возможные ошибки
1) Если вы видите что-то вроде /var/www/html/jobe/application/libraries/../../runguard/runguard: warning: timelimit exceeded
при отправке решения в mdl:
Система тестирования подвисла и не успела в рамках ограничения на время тестирования задания его проверить. При этом если вы повторно попробуете отправить задание - система ничего не сделает т.к. думает что раз решение не изменилось, то исход будет такой же.
Решение - добавить фиктивное изменение в код (например пустую строку) и переотправить.