Console.WriteLine (Чтение входных данных);
На этот раз напишем программу, которая будет считывать введенную информацию в консоль и обрабатывать ее. Кто-нибудь спросит, почему без особых объяснений, что и как работает. Отвечу сразу, большинство людей, осваивающих новые технологии, хочет видеть сразу результат. Для того чтобы больше заинтересовать читателя, первые пара-тройка уроков, будут такого вида. Позднее будут разобраны классы, методы, свойства и поля.
Для начала создадим новый проект. Так как мы уже знаем, из чего состоит консольное приложение, то нет необходимости создавать его из пустого проекта. Сразу создадим новое консольное приложение. Выполним действия File>New>Project. Из списка выберем ConsoleApplication, в результате чего, пулучим готовый проект, содержащий в себе класс Program.cs со статичекской функцией Main(). Если очень упрощенно понять чем отличаются статические методы и переменные от не статических, то следует сказать о том, что все статическое мы можем использовать не создавая экземпляра класса, а для не статического необходимо создавать эекзмпляры классов:
var myObject = new MyClass();
Итак, мы создали новый проект консольного приложения. Как мы уже знаем, программа начнет свое выполнение в методе Main. Для того чтобы считать информацию из консоли, необходимо использовать статический метод ReadLine из класса Console.
Console.ReadLine();
Этот метод, не принимает параметров, но зато возвращает считанное значение. Чтобы программа была более логичной, выведем сперва приглашающий текст с помощью метода WriteLine этого же класса Console. Текст будет, например, Как вас зовут? Сделайте это самостоятельно. После того как консоль выведет это сообщение, она будет ждать пользовательского входа, если мы напишем следом за выводом текста код, считывающий значения с консоли. Так как ReadLine возвращает строку, нам необходимо ее сохранить для дальнейших манипуляций с полученными данными.
var inputText = Console.ReadLine();
Тем самым после ввода значения в консоль и нажатия на Enter, введенная строка сохранится в переменную inputText. Для упрощения в .NET была добавлена возможность не указывать явно тип данных, компилятор сам понимает какого типа (не путать с javascript, в котором var - это вообще любой тип данных, т.к. этот язык не типизирован). На самом деле вместо var можно написать string, но нельзя какой-либо другой тип, это вызовет ошибку компиляции.
На данный момент мы имеет программу, которая запрашивает у пользователя имя и запоминает его в переменную. С этим надо что-нибудь сделать. Давайте поздороваемся с пользователем, и одновременно спросим, сколько ему лет. Сделайте это сами и сохраните в новую переменную возраст пользователя.
Возраст, это числовое значение и работать с ним необходимо как с типом int, что дословно значит integer, т.е. целочисленный. Нам этого типа вполне хватит.
Так как считанное значение с консоли является строкой, нам необходимо преобразовать его в число. Тут есть один тонкий момент, пользователь может ввести не число, а буквы, и тогда при попытке сконвертировать такую строку в тип int, наша программа упадет с исключением. Поэтому используем следующую конструкцию
int age;
if (int.TryParse(inputText, out age))
{
}
else
{
}
Эта конструкция позволяет попробовать преобразовать текст в переменной inputText в тип int и записать его в переменную age. Эта переменная передается в метод out параметром, что позволяет методу внутри себя модифицировать ее и ее изменения будут доступны коду, который вызвал данный метод (TryParse).
Рассмотрим подробнее, что делает этот код, если удалось преобразовать текст в число, то метод вернет true (истина), иначе вернет false (ложь). Мы обернули эту конструкцию в if, чтобы в случае успеха выполнить один код, в случае неудачи другой. Давайте в случае успеха скажем пользователю, в каком году он родился. Для этого необходимо из текущего года вычесть его полученный возраст (не будем учитывать вариант, когда пользователь родился в конце года, например, в декабре 1995 и сейчас ему еще 29, то текущий год минус возраст, даст неверный результат. 2015 - 19 = 1996, можете сами модифицировать программу в дальнейшем, чтобы она не давала погрешности, запрашивая, например, у пользователя и дату рождения)
Текущий год можно получить с помощью кода DateTime.Today.Year. В уловном блоке if, напишите код вычисления даты рождения, и вывода этого года пользователю. Для этого необходимо создать переменную, которой присвоить разницу между текущим годом и возрастом пользователя. Потом вывести это в консоль. Произвести вычисление можно следующим образом, где age это переменная, в которую я сохранил возраст пользователя.
var birthYear = DateTime.Today.Year - age;
Как вывести информацию в консоль, вы уже знаете. Ниже приведен исходный код программы. Можете видоизменить ее, возможно, задать пользователю несколько вопросов или внести свою логику
using System;
namespace Lisson2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Привет, как тебя зовут?");
var inputText = Console.ReadLine();
Console.WriteLine("Привет "+ inputText + ", сколько тебе лет?");
inputText = Console.ReadLine();
int age;
if (int.TryParse(inputText, out age))
{
var birthYear = DateTime.Today.Year - age;
Console.WriteLine("Возможно вы родились в "+ birthYear + " году");
}
else
{
Console.WriteLine("Введите корректный возраст");
}
}
}
}