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

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

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

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

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


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

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

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

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

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

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

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

Умные мысли часто преследовали его. Но он был быстрее его...
Безумно можно быть первыыым


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


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

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

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

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

Лень - двигатель прогресса
Цитаты, над которыми стоит задуматься


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

Эх, Богдан, Богдан, Богом дан Богдан


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

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


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

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


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

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

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

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

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

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


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

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

Не возникает ли у Вас дежавю?


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

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

Да, так тоже можно было


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


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

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

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

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

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

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

История, о которой невозможно молчать

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

Так и появляются наши подписчики


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

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

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


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

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

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

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


Что дальше?

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


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

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

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

Report Page