Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1447 / 158 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Лекция 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. Ввожу код на сайте, пишет:

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

 

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