Опубликован: 25.03.2010 | Уровень: для всех | Доступ: платный
Лекция 20:

Консольные приложения в С#

< Лекция 19 || Лекция 20: 1234567891011

Организация консольного ввода-вывода в C#

Для организации ввода-вывода в C# предусмотрен класс System.Console. Он же предназначен для вывода сообщений об ошибках. Естественно, что этот класс чаще применяется в консольных приложениях. Системную консоль иногда называют командной строкой.

Основными методами класса являются WriteLine() и Write(). В отличие от метода Write() метод WriteLine() добавляет в конец строки символ новой строки \n автоматически. Метод ReadLine() позволяет считывать информацию с системной консоли до ближайшего символа \n, метод Read() считывает с системной консоли единственный символ.

  • Создайте консольное приложение с именем Test
  • Измените имя исходного файла на App.cs
  • Измените пространство имен на Test, а имя класса на BasicIO
  • Уберите аргументы у функции Main()
  • Заполните метод Main() следующим кодом
using System;
  
namespace Test
{
class BasicIO
{
static void Main()
  {
  // Тестируем пользователя
  string name;
  Console.Write("Введите Ваше имя: ");
  name = Console.ReadLine(); // Читаем ввод после нажатия Enter
  
  string age;
  Console.Write("Введите Ваш возраст (лет): ");
  age = Console.ReadLine(); // Читаем ввод после нажатия Enter
  
  // Выводим полученную информацию на консоль
  Console.WriteLine("\nПривет, дорогой {0}! 
    Вам {1} лет.", name, age);
  
  while(true);
  }
}
}
Листинг 20.30 . Использование методов класса консольного ввода/вывода

Результаты экрана

Введите Ваше имя: Снетков В.М.
Введите Ваш возраст (лет): 55
  
Привет, дорогой Снетков В.М.! Вам 55 лет.
  • Нажмите комбинацию клавиш Ctrl-C или Ctrl-Break, чтобы прервать работу приложения, зацикленного на бесконечном выполнении предложения while(true);

Средства форматирования строк в C#

В C++ в консольном выводе функции prinf() применяются спецификаторы форматирования %d, %s, %c и т.д. в отдельности для каждого встроенного типа данных. В C# в консольном выводе функций Console.Write() и Console.Writeln() применяются универсальные индексированные метки {0}, {1}, {2}, и т.д., содержащие порядковый номер выводимого параметра в списке параметров. Эти подстановочные выражения обозначают знакоместа ( placeholder ), куда будет выводиться значение соответствующего параметра из списка.

Знакоместо должно начинаться открывающей фигурной скобкой, а завершаться закрывающей {}. Чтобы отобразить содержащиеся в строке форматирования фигурные скобки на дисплее, их следует указать парно {{ или }}. Аналогично, чтобы вывести на дисплей символ обратной косой черты, его нужно заэкранировать в строке форматирования вторым таким же символом.

Параметры форматирования можно применять и для массивов. При этом подстановочные выражения будут указывать на элементы этого массива.

В подстановочном выражении можно указывать и более точные настройки формата с помощью дополнительных параметров форматирования. Параметры форматирования приведены в таблице, причем их можно указывать как строчными так и прописными буквами.

Таблица 20.6 . Параметры форматирования C#
Параметр Значение
C, c Используется для вывода значений в денежном ( Currency ) формате. По умолчанию перед выводимым значением подставляется символ доллара ($), хотя можно отменить подстановку этого символа при помощи объекта NumberFormatInfo.
D, d Используется для вывода целых десятичных значений ( Decimal ). После этого символа можно указать количество значащих цифр.
E, e Для вывода значений в экспоненциальном формате ( Scientific ).
F, f Вывод значений с фиксированной точкой ( Fixed-point ).
G, g Общий ( General ) формат.Применяется для вывода значений с фиксированной точностью или в экспоненциальном формате.
N, n Стандартное числовое форматирование ( Number ) с использованием разделителей (пробелов или запятых) между разрядами.
X, x Вывод значений в шестнадцатеричном формате ( Hexadecimal ). Если использовать заглавную X, то символы в шестнадцатеричном формате также будут заглавными.
R, r Округление ( Round-trip )

Символы форматирования следуют в индексированных знакоместах сразу за номером подставляемого параметра через двоеточие:

{0:C}, {1:d}, {2:X} и т.д.

Параметры форматирования можно использовать для формирования любых символьных строк с использованием статического метода String.Format().

  • Измените консольное приложение с именем Test, заполнив метод Main() следующим кодом
using System;
  
namespace Test
{
class BasicIO
  {
  static void Main()
  {
  // Форматирование без параметров
  string theString = "Привет всем!";
  int theInt = 15;
  float theFloat = 9.99F;
  double theDouble = 123.456789;
  BasicIO theClass = new BasicIO();
  // Вывод
  Console.WriteLine("Без параметров форматирования:");
  Console.WriteLine("string: {0}\nint: {1}\nfloat: 
    {2}\ndouble: {3}\nobject: {4}" 
    , theString, theInt, theFloat, theDouble, theClass);
  Console.Write("\n\n");
  
  // Форматирование массива
  object[] array = {"Привет!", 20.9, 1, 
    "55", Math.PI};
  Console.WriteLine("Элементы массива:\n{0}; {1}; 
    {2}; {3}; {4}", array);
  Console.Write("\n\n");
  
  // Форматирование с параметрами
  Console.WriteLine("С параметрами форматирования:");
  Console.WriteLine("C format: {0:C}", 99989.987);
  Console.WriteLine("D9 format: {0:D9}", 99999);
  Console.WriteLine("E format: {0:E}", .31415926538 * 10);
  Console.WriteLine("F format: {0:F3}", 55555.6666);
  Console.WriteLine("N format: {0:N}", 99999);
  Console.WriteLine("X format: {0:X}", 99999);
  Console.WriteLine("x format: {0:x}", 99999);
  Console.Write("\n\n");
  
  // Предварительное форматирование в символьную строку
  string str;
  str = String.Format("C format: {0:C}", 99989.987);
  Console.WriteLine("Предварительное 
    форматирование в символьную строку:");
  Console.WriteLine(str);
  
  // Аналогично, с предварительным форматированием...
  str = "ФИО: {{ {0} }}, Возраст: {{ {1} }}";
  str = String.Format(str, "Снетков В.М.", 55);
  Console.WriteLine("\n\nПредварительное 
    форматирование в символьную строку:");
  Console.WriteLine(str);
  
  while(true);
  }
  }
}
Листинг 20.31 . Иллюстрация способов форматирования консольного вывода

Результат форматирования вывода

Без параметров форматирования:
string: Привет всем!
int: 15
float: 9,99
double: 123,456789
object: Test.BasicIO


Элементы массива:
Привет!; 20,9; 1; 55; 3,14159265358979


С параметрами форматирования:
C format: 99 989,99р.
D9 format: 000099999
E  format:  3,141593E+000
F  format:  55555,667
N  format:  99 999,00
X  format:  1869F
x  format:  1869f


Предварительное форматирование в символьную строку:
C format: 99 989,99р.
  
  
Предварительное форматирование в символьную строку:
ФИО: { Снетков В.М. }, Возраст: { 55 }
< Лекция 19 || Лекция 20: 1234567891011
Максим Филатов
Максим Филатов

Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет:

Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.

 

Как активировать код?

Денис Пашков
Денис Пашков
Россия
Татьяна Ковалюк
Татьяна Ковалюк
Украина, Киев, Киевский политехнический институт, 1974