{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Kotlin. Пользовательский ввод и вывод

Статья от E-code

Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

Martin Golding

Иногда хочется просто сесть вечером у окна и рассказать кому-то о своей жизни, планах и достижениях. Причем этот разговор должен быть душевным и весьма приятным, чтобы удовлетворить нашего внутреннего поэта. И Kotlin предоставляет нам эту возможность исповедаться, причём сделав это в формате диалога (а не только монолога, как в этой статье), предлагая нам удобный функционал.

Сегодня мы поговорим о важной теме: пользовательском вводе и выводе (как говорится: "Вошёл и вышел. Приключение на 20 минут").

Пользовательский вывод

В прошлых статьях мы неоднократно пользовались функцией println(), для того чтобы выводить некоторую информацию в консоль (Сидорович бы за это определенно бы взял плату). Теперь давайте познакомимся со способами вывода в консоль более детально:

Существуют две основные функции, позволяющие сделать это: print() и println()

Функции print() и println() предназначены для вывода информации об объекте в консоль

"Да кто такой этот ваш объект?" - спросите вы. И будете абсолютно правы.

В качестве объекта может выступать любые типы данных: числа, строки, булевские переменные (да даже наши собственные объекты, о которых мы поговорим позже)

Единственное различие между print() и println() заключается в том, что последнее добавляет перевод на новую строку, что и демонстрирует следующий код. Никакой магии, только хардкод!

fun main(args: Array<String>) { //Умные мысли часто преследовали его. Но он был быстрее... println("Не важно") print("кто ты") print("Важно лишь") println("Кто ты") print("!") }

Результат в консоли:

Безумно можно быть первыыым

Теперь, когда мы стали самыми настоящими писателями, способными переносить текст на новую строку, пора рассказать ещё о нескольких фишках.

Специальные символы

Представьте, что вы ленивый разработчик (я же обычно не представляю) и вам лень добавлять суффикс ln к слову print(). Как тогда можно вывести текст с новой строки в нашу консоль?

Для этого умные программисты (заметьте: неленивые) создали специальные символы, которые используются специально в таких экстремальных и адреналиновых ситуациях.

Например, мы можем использовать в нашей строке символ '\n', чтобы сделать перенос на новую строчку прямо в нашем текста.

fun main(args: Array<String>) { print("Если программист молчит,\nТо лучше его не перебивать") }
Цитаты, над которыми стоит задуматься

Помимо символа '\n' существует ещё множество других специальных символов. Так, символ '\t' добавляет таб в ваш текст, добавляющий фиксированное значение пробелов:

fun main(args: Array<String>) { print("Эй Богдан,\tя здесь") }
Эх, Богдан, Богдан, Богом дан Богдан

А что делать, если мы захотим похвастаться своей цитатой перед нашим пользователем. Скорее всего, вы напишите так:

fun main(args: Array<String>) { print("Один писатель Пшкин сказал: "Да че вы ссыте?\nУ него пневматика".") //ОШИБКА! }

Все герои вымышлены, любые совпадения являются случайными

И непременно получите много мата от Kotlin'а, представленное в виде следующей ошибки:

Мат программистов весьма специфичен.. Excepting *цензура

Почему этот негодник (Kotlin) позволяет общаться с Вами в таком тоне?

А всё потому, что Котлин читает ваш код слева-направо, сверху-вниз, поэтому когда он видит первую двойную кавычку в Вашей цитате, он на полном серьёзе воспринимает еë как кавычку, закрывающую строку

И что теперь делать? Мы не можем отказаться от того, что мир не узнает нашей цитаты, только из-за синтаксиса какого-то Kotlin'а.

И опять специальные символы решают нашу проблему!

Добавив ' \" ', мы говорим Kotlin'у: "дружище, просто выведи эту кавычку в консоль, не воспринимая её всерьёз". Результат не заставит себя ждать (всерьёз подумываю уйти в маркетинг):

fun main(args: Array<String>) { print("Один писатель Пшкин сказал: \"Да че вы ссыте?\nУ него пневматика\".") }

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

Шаблоны строк

Помните, как в прошлой статье мы выводили значение переменной вместе с текстом с помощью знака "+":

//Соединяем значение переменной с текстом и выводим в консоль println("У меня на счету: " + money + "руб.") //Не возникает ли у Вас дежавю?

На самом деле это кража. Кража вашего времени и усилий, необходимых на нажатие символ "+". Есть куда более лёгкий и приятный глазу способ вывода переменных вместе с текстом в консоль. Эту тяжкую работу на себя берут шаблоны строк!

Для того, чтобы вставить переменную прямиком в текст сообщения, достаточно всего лишь поставить знак доллара '$' в тексте и написать имя переменной:

fun main(args: Array<String>) { var money = 1000000 println("У меня на счету: $money руб.") //Да, так тоже можно было }

Вот так легко и просто мы можем сэкономить тысячу усилий, которые понадобились на поставку '+' в наш код. Красота!

Пользовательский ввод

А теперь настало время добавить интерактива с пользователем в нашу консоль! Сейчас мы научимся запрашивать у пользователя вводить текст в консоль и работать с ним.

Представим, что мы хотим создать себе друга, с которым мы бы могли общаться через консоль. Нет, не беспокойтесь, выходить на улицу знакомиться мы не будем. Мы будем использовать функция readLine():

Функция readLine() запрашивает у пользователя ввод в консоль, возвращая результат типа String (строка).

Этот результат можно будет сохранить в переменную, после чего в дальнейшем использовать в коде.

Давайте попросим пользователя представиться, введя его имя (как тебя зовут красавчик?)

fun main(args: Array<String>) { println("Как тебя кличут, бродяга?") print("Введите Ваше имя: ") var userName = readLine() }
История, о которой невозможно молчать

Теперь выведем его имя в консоль (берём эти уроки в качестве пикапа):

fun main(args: Array<String>) { println("Как тебя кличут, бродяга?") print("Введите Ваше имя: ") var userName = readLine() println("Добро пожаловать в E-code, $userName") }
Так и появляются наши подписчики

Супер! Мы уже почти способны писать сверх-коды для гугла. Ну а что делать, если мы захотим ввести число? Ведь readLine() всегда возвращает тип String, а не Int...

На помощь придёт преобразование типов:

println("Сколько тебе лет, $userName?") print("Мне: ") var age = readLine()!!.toInt() println("$age? - Уважаем")

Хороший ребёнок говорит первое слово "П... Папа", лучший - "П... Преобразование типов"

Богдан - большой мальчик

В Kotlin'е возможно преобразовывать один тип данных в другой. Для этого используются специальные функции: .toByte(), .toShort(), .toInt(), .toLong(), toFloat(), .toDouble(), toChar() и toString(), соответственно.

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

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

Так держать! 🔥

Что дальше?

В следующей статье мы с тобой изучим виды операций в Kotlin'е и научимся работать с нашими данными!

Дорогой читатель, я надеюсь моя статья оказалась полезной для тебя!

Ты всегда можешь следить за моим творчеством на этом канале.

Спасибо за проявленный интерес!

0
Комментарии
-3 комментариев
Раскрывать всегда