Добавить в цитаты Настройки чтения

Страница 21 из 502

<b>if(b == true) . . .</b>

И в-третьих, результатом выполнения оператора отношения является логическое значение. Именно поэтому в результате вычисления выражения 10 > 9 на экран выводится значение "True." Кроме того, выражение 10 > 9 следует заключить в скобки, поскольку оператор + имеет более высокий приоритет, чем оператор >.

Некоторые возможности вывода

До сих пор при выводе с помощью метода WriteLine() данные отображались в формате, используемом по умолчанию. Но в среде .NET Framework определен достаточно развитый механизм форматирования, позволяющий во всех деталях управлять выводом данных. Форматированный ввод-вывод подробнее рассматривается далее в этой книге, а до тех пор полезно ознакомиться с некоторыми возможностями форматирования. Они позволяют указать, в каком именно виде следует выводить значения с помощью метода WriteLine(). Благодаря этому выводимый результат выглядит более привлекательно. Следует, однако, иметь в виду, что механизм форматирования поддерживает намного больше возможностей, а не только те, которые рассматриваются в этом разделе.

При выводе списков данных в предыдущих примерах программ каждый элемент списка приходилось отделять знаком +, как в следующей строке.

<b>Console.WriteLine(&quot;Вы заказали &quot; + 2 +</b>

<b>&quot; предмета по цене $&quot; + 3 + &quot; каждый.&quot;);</b>

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

<b>Console.WriteLine(&quot;Деление 10/3 дает: &quot; + 10.0/3.0); </b>

который выводит следующий результат.

<b>Деление 10/3 дает: 3.33333333333333</b>

В одних случаях такого вывода может оказаться достаточно, а в других — он просто недопустим. Например, в финансовых расчетах после десятичной точки принято указывать лишь два десятичных разряда.

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

<b>WriteLine<i>(&quot;форматирующая строка&quot;, 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(&quot;В феврале {0} или {1} дней.&quot;, 28, 29);</b>

получается следующий результат.

<b>В феврале 28 или 29 дней</b>

Как видите, значение 2 8 подставляется вместо спецификатора { 0 }, а значение 2 9 — вместо спецификатора {1}. Следовательно, спецификаторы формата обозначают место в строке, где отображаются соответствующие аргументы (в данном случае — значения 28 и 29). Кроме того, обратите внимание на то, что дополнительные значения разделяются запятой, а не знаком +.

Ниже приведен видоизмененный вариант предыдущего оператора, в котором указывается ширина полей.

<b>Console.WriteLine(&quot;В феврале {0,10} или {1,5} дней.&quot;, 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 (&quot;ЧислоtКвадратtКуб&quot;) ;</b>

<b>    for(i = 1; i &lt; 10; i++)</b>

<b>      Console.WriteLine(&quot;{0}t{1}t{2}&quot;, 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>