Страница 21 из 502
<b>if(b == true) . . .</b>
И в-третьих, результатом выполнения оператора отношения является логическое значение. Именно поэтому в результате вычисления выражения 10 > 9 на экран выводится значение "True." Кроме того, выражение 10 > 9 следует заключить в скобки, поскольку оператор + имеет более высокий приоритет, чем оператор >.
Некоторые возможности вывода
До сих пор при выводе с помощью метода WriteLine() данные отображались в формате, используемом по умолчанию. Но в среде .NET Framework определен достаточно развитый механизм форматирования, позволяющий во всех деталях управлять выводом данных. Форматированный ввод-вывод подробнее рассматривается далее в этой книге, а до тех пор полезно ознакомиться с некоторыми возможностями форматирования. Они позволяют указать, в каком именно виде следует выводить значения с помощью метода WriteLine(). Благодаря этому выводимый результат выглядит более привлекательно. Следует, однако, иметь в виду, что механизм форматирования поддерживает намного больше возможностей, а не только те, которые рассматриваются в этом разделе.
При выводе списков данных в предыдущих примерах программ каждый элемент списка приходилось отделять знаком +, как в следующей строке.
<b>Console.WriteLine("Вы заказали " + 2 +</b>
<b>" предмета по цене $" + 3 + " каждый.");</b>
Конечно, такой способ вывода числовой информации удобен, но он не позволяет управлять внешним видом выводимой информации. Например, при выводе значения с плавающей точкой нельзя определить количество отображаемых десятичных разрядов. Рассмотрим оператор
<b>Console.WriteLine("Деление 10/3 дает: " + 10.0/3.0); </b>
который выводит следующий результат.
<b>Деление 10/3 дает: 3.33333333333333</b>
В одних случаях такого вывода может оказаться достаточно, а в других — он просто недопустим. Например, в финансовых расчетах после десятичной точки принято указывать лишь два десятичных разряда.
Для управления форматированием числовых данных служит другая форма метода WriteLine(), позволяющая встраивать информацию форматирования, как показано ниже.
<b>WriteLine<i>("форматирующая строка", argO, argl, ... , argN</i>);</b>
В этой форме аргументы метода WriteLine() разделяются запятой, а не знаком +. А форматирующая строка состоит из двух элементов: обычных печатаемых символов, предназначенных для вывода в исходном виде, а также спецификаторов формата. Последние указываются в следующей общей форме:
<i><b>{argnum, width: fmt}</b></i>
где argnum — номер выводимого аргумента, начиная с нуля; width — минимальная ширина поля; fmt — формат. Параметры width и fmt являются необязательными.
Если во время выполнения в форматирующей строке встречается спецификатор формата, то вместо него подставляется и отображается соответствующий аргумент, обозначаемый параметром argnum. Таким образом, местоположение спецификатора формата в форматирующей строке определяет место отображения соответствующих данных. Параметры width и fmt'указывать необязательно. Это означает, что в своей простейшей форме спецификатор формата обозначает конкретный отображаемый аргумент. Например, спецификатор { 0 } обозначает аргумент агдО, спецификатор {1} — аргумент argl и т.д.
Начнем с самого простого примера. При выполнение оператора
<b>Console.WriteLine("В феврале {0} или {1} дней.", 28, 29);</b>
получается следующий результат.
<b>В феврале 28 или 29 дней</b>
Как видите, значение 2 8 подставляется вместо спецификатора { 0 }, а значение 2 9 — вместо спецификатора {1}. Следовательно, спецификаторы формата обозначают место в строке, где отображаются соответствующие аргументы (в данном случае — значения 28 и 29). Кроме того, обратите внимание на то, что дополнительные значения разделяются запятой, а не знаком +.
Ниже приведен видоизмененный вариант предыдущего оператора, в котором указывается ширина полей.
<b>Console.WriteLine("В феврале {0,10} или {1,5} дней.", 28, 29);</b>
Выполнение этого оператора дает следующий результат.
<b>В феврале 28 или 29 дней.</b>
Как видите, неиспользуемые части полей заполнены пробелами. Напомним, что минимальная ширина поля определяется параметром width. Если требуется, она может быть превышена при выводе результата.
Разумеется, аргументы, связанные с командой форматирования, не обязательно должны быть константами. Ниже приведен пример программы, которая выводит таблицу результатов возведения чисел в квадрат и куб. В ней команды форматирования используются для вывода соответствующих значений.
<b>// Применить команды форматирования.</b>
<b>using System;</b>
<b>class DisplayOptions { </b>
<b> static void Main() { </b>
<b> int i;</b>
<b> Console.WriteLine ("ЧислоtКвадратtКуб") ;</b>
<b> for(i = 1; i < 10; i++)</b>
<b> Console.WriteLine("{0}t{1}t{2}", i, i*i, i*i*i);</b>
<b> }</b>
<b>}</b>
Результат выполнения этой программы выглядит следующим образом.
<b>Число Квадрат Куб </b>
<b>1 </b><b>1 </b><b>1</b>
<b>2 </b><b>4 </b><b>8</b>
<b>3 </b><b>9 </b><b>27</b>