|
Affichage de données formatées |
|
|
Introduction |
|
Au lieu d'utiliser deux Write () ou une combinaison de Write () et WriteLine () pour afficher les données, vous pouvez convertir une valeur en chaîne de caractères et l'afficher directement. Pour ce faire, vous pouvez fournir deux chaînes de caractères à Write () ou à WriteLine () et les séparer par une virgule :
|
|
Voici les exemples : using System;
// An Exercise class
class Exercise
{
static void Main()
{
String FullName = "Anselme Bogos";
int Age = 15;
double HSalary = 22.74;
Console.WriteLine("Full Name: {0}", FullName);
Console.WriteLine("Age: {0}", Age);
Console.WriteLine("Distance: {0}", HSalary);
Console.WriteLine();
}
}
Ceci produirait : Full Name: Anselme Bogos Age: 15 Distance: 22.74 Comme mentionné déjà, la valeur numérique introduite au clavier dans les accolades de la première partie est un nombre commandé. Si vous voulez afficher plus d'une valeur, fournissez chaque valeur par incrémentation dans ses accolades. La syntaxe utilisée est : Write("To Display {0} {1} {2} {n}", First, Second, Third, nth);
Vous pouvez utiliser les sections entre les deux accolades pour créer une phrase signicative.
Nous avons dit précédemment que tout ce que l'utilisateur tape à l'aide du clavier est principalement une chaîne de caractères et c'est votre travail de le convertir en un type approprié. En revanche, si vous avez une valeur qui n'est pas une chaîne de caractères, vous pouvez facilement la convertir en chaîne de caractères. Pour soutenir ceci, chaque type de données de .NET Framework fournit un mécanisme appelé ToString. Normalement, dans C#, comme nous avons mentionné avec insistance, et comme nous l'avons fait jusqu'ici, cette conversion est automatiquement ou d'une manière transparente faite par le compilateur. Dans certains cas, vous devrez exécuter la conversion vous-même. Pour la conversion de la valeur d'une données de type primitif en chaîne de caractères, dactylographiez le nom de la variable, suivi d'un point, suivi de ToString (). Voici un exemple : using System;
// An Exercise class
class Exercise
{
static void Main()
{
string FullName = "Anselme Bogos";
int Age = 15;
double HSalary = 22.74;
Console.WriteLine("Full Name: {0}", FullName);
Console.WriteLine("Age: {0}", Age.ToString());
Console.WriteLine("Distance: {0}", HSalary.ToString());
Console.WriteLine();
}
}
Dans certains cas, vous dactylographierez quelque chose dans les parenthèses de ToString ().
|
|
Formatage d'un nombre |
|
Pour afficher correctement les données de manière conviviale et extrêmement familière, vous pouvez les formater. Le formatage indique au compilateur quel genre de données vous utilisez et comment vous voulez que le compilateur l'affiche à l'utilisateur. Comme cela se fait, vous pouvez afficher un nombre naturel en valeur commune ou, selon la circonstance, vous pouvez préférer l'afficher comme valeur hexadécimale. Quand il s'agit des nombres à double précision, vous pouvez vouloir afficher une précision avec trois valeurs du côté droit du séparateur de décimal et dans certains cas, vous pouvez vouloir afficher un salaire avec seulement 2 positions de décimales. Le namespace system fournit une lettre spécifique que vous pouvez utiliser dans Write () ou WriteLine () placeholder pour chaque catégorie de données à afficher. Pour formater une valeur, dans le placeholder de la variable ou de la valeur, après le nombre, tapez deux points et l'une des lettres appropriées du tableau suivant. Si vous utilisez ToString (), alors, dans les parenthèses de ToString (), vous pouvez inclure une lettre spécifique ou une combinaison à l'intérieur des guillemets ("). Les lettres et leurs significations sont :
Voici les exemples : using System;
// An Exercise class
class Exercise
{
static void Main()
{
double Distance = 248.38782;
int Age = 15;
int NewColor = 3478;
double HSalary = 22.74, HoursWorked = 35.5018473;
double WeeklySalary = HSalary * HoursWorked;
Console.WriteLine("Distance: {0}", Distance.ToString("E"));
Console.WriteLine("Age: {0}", Age.ToString());
Console.WriteLine("Color: {0}", NewColor.ToString("X"));
Console.WriteLine("Weekly Salary: {0} for {1} hours",
WeeklySalary.ToString("c"),
HoursWorked.ToString("F"));
Console.WriteLine();
}
}
Ceci produirait : Distance: 2.483878E+002 Age: 15 Color: D96 Weekly Salary: $807.31 for 35.50 hours Comme vous avez pu noter, si vous laissez les parenthèses de ToString () vides, le compilateur utiliserait un formatage par défaut pour afficher la valeur. Au contraire de faire appel à ToString (), vous pouvez utiliser les lettres ci-dessus dans les accolades de la première partie de Write () ou WriteLine (). Dans ce cas, après le nombre dans les accolades, dactylographiez deux points suivi de la lettre. |
||||||||||||||||||||||||||||||||||||||||
|
|
using System;
namespace GeorgetownCleaningServices4
{
class OrderProcessing
{
static void Main()
{
// Price of items
const decimal PriceOneShirt = 0.95M;
const decimal PriceAPairOfPants = 2.95M;
const decimal PriceOneDress = 4.55M;
const decimal TaxRate = 5.75M; // 5.75%
// Basic information about an order
string CustomerName, HomePhone;
DateTime OrderDate;
// Unsigned numbers to represent cleaning items
uint NumberOfShirts, NumberOfPants, NumberOfDresses;
// Each of these sub totals will be used for cleaning items
decimal SubTotalShirts, SubTotalPants, SubTotalDresses;
// Values used to process an order
decimal TotalOrder, TaxAmount, SalesTotal;
decimal AmountTended, Difference;
Console.WriteLine("-/- Georgetown Cleaning Services -/-");
// Request order information from the user
Console.Write("Enter Customer Name: ");
CustomerName = Console.ReadLine();
Console.Write("Enter Customer Phone: ");
HomePhone = Console.ReadLine();
Console.WriteLine("Enter the order date and " +
time (mm/dd/yyyy hh:mm AM/PM)");
OrderDate = DateTime.Parse(Console.ReadLine());
// Request the quantity of each category of items
Console.Write("Number of Shirts: ");
NumberOfShirts = uint.Parse(Console.ReadLine());
Console.Write("Number of Pants: ");
NumberOfPants = uint.Parse(Console.ReadLine());
Console.Write("Number of Dresses: ");
NumberOfDresses = uint.Parse(Console.ReadLine());
// Perform the necessary calculations
SubTotalShirts = NumberOfShirts * PriceOneShirt;
SubTotalPants = NumberOfPants * PriceAPairOfPants;
SubTotalDresses = NumberOfDresses * PriceOneDress;
// Calculate the "temporary" total of the order
TotalOrder = SubTotalShirts +
SubTotalPants + SubTotalDresses;
// Calculate the tax amount using a constant rate
TaxAmount = TotalOrder * TaxRate;
// Add the tax amount to the total order
SalesTotal = TotalOrder + TaxAmount;
// Communicate the total to the user...
Console.Write("\nThe Total order is: ");
Console.WriteLine(SalesTotal);
// and request money for the order
Console.Write("Amount Tended? ");
AmountTended = decimal.Parse(Console.ReadLine());
// Calculate the difference owed to the customer
// or that the customer still owes to the store
Difference = AmountTended - SalesTotal;
Console.WriteLine();
// Display the receipt
Console.WriteLine("====================================");
Console.WriteLine("-/- Georgetown Cleaning Services -/-");
Console.WriteLine("====================================");
Console.WriteLine("Customer: {0}", CustomerName);
Console.WriteLine("Home Phone: {0}", HomePhone);
Console.WriteLine("Date & Time: {0}", OrderDate);
Console.WriteLine("------------------------------------");
Console.WriteLine("Item Type Qty Unit/Price Sub-Total");
Console.WriteLine("------------------------------------");
Console.WriteLine("Shirts {0} {1:C} {2}",
NumberOfShirts.ToString(), PriceOneShirt,
SubTotalShirts.ToString("C"));
Console.WriteLine("Pants {0} {1:C} {2:C}",
NumberOfPants, PriceAPairOfPants,
SubTotalPants);
Console.WriteLine("Dresses {0} {1:C} {2:C}",
NumberOfDresses, PriceOneDress,
SubTotalDresses);
Console.WriteLine("------------------------------------");
Console.WriteLine("Total Order: {0:C}", TotalOrder);
Console.WriteLine("Tax Rate: {0:P}", TaxRate);
Console.WriteLine("Tax Amount: {0}",
TaxAmount.ToString("C"));
Console.WriteLine("Net Price: {0:F}", SalesTotal);
Console.WriteLine("------------------------------------");
Console.WriteLine("Amount Tended: {0:C}", AmountTended);
Console.WriteLine("Difference: {0:C}", Difference);
Console.WriteLine("====================================");
}
}
}
|
-/- Georgetown Cleaning Services -/- Enter Customer Name: Gretchen McCormack Enter Customer Phone: (410) 739-2884 Enter the order date and time (mm/dd/yyyy hh:mm AM/PM) 04/09/2001 10:25 AM Number of Shirts: 5 Number of Pants: 12 Number of Dresses: 8 The Total order is: 80.951625 Amount Tended? 100 ==================================== -/- Georgetown Cleaning Services -/- ==================================== Customer: Gretchen McCormack Home Phone: (410) 739-2884 Date & Time: 4/9/2001 10:25:00 AM ------------------------------------ Item Type Qty Unit/Price Sub-Total ------------------------------------ Shirts 5 $0.95 $4.75 Pants 12 $2.95 $35.40 Dresses 8 $4.55 $36.40 ------------------------------------ Total Order: $76.55 Tax Rate: 5.75 % Tax Amount: $4.40 Net Price: 80.95 ------------------------------------ Amount Tended: $100.00 Difference: $19.05 ==================================== |
|
Formatage d'une ligne |
|
Dans les programmece qui précèdent, pour afficher une ligne de texte, nous avons facilement utiliser Write () ou WriteLine (). Pour placer les textes de différentes longueurs une au-dessus de l'autre, nous avons dû « corrompre » une chaîne de caractères en incluant les espaces vides supplémentaires. Une telle technique est incertaine et peu professionnelle. Heureusement, vous pouvez très bien formater la manière dont une chaîne de caractères ou une ligne de texte devrait s'afficher. .NET Framework fournit des mécanismes pour contrôler la quantité d'espace utilisé pour afficher une chaîne de caractères de texte, et comment aligner cette chaîne de caractères sur sa ligne. Pour spécifier la quantité d'espace alloué pour afficher une chaîne de caractères, vous pouvez utiliser son placeholder dans Write () ou WriteLine (). Pour ce faire, dans le placeholder, dactylographiez 0 ou le nombre par incrémentation du (placer) et son caractère de formatage au besoin. Puis, dactylographiez une virgule suivie du nombre de caractères équivalents à la largeur désirée. Voici les exemples : using System;
// An Exercise class
class Exercise
{
static void Main()
{
string FullName = "Anselme Bogos";
int Age = 15;
double HSalary = 22.74;
Console.WriteLine("Full Name: {0,20}", FullName);
Console.WriteLine("Age:{0,14}", Age.ToString());
Console.WriteLine("Distance: {0:C,8}", HSalary.ToString());
Console.WriteLine();
}
}
Ceci produirait : Full Name: Anselme Bogos Age: 15 Distance: 22.74 Le signe que vous fournissez pour la largeur est très important. S'il est positif, la ligne du texte est alignée vers la droite. Ceci devrait être votre alignement préféré pour des valeurs numériques. Si le nombre est négatif, alors le texte est aligné vers la gauche.
Comme dit précédemment, quand l'utilisateur écrit une valeur date pour une variable date- heure, le compilateur ajoute une partie heure à la valeur. Heureusement, si vous voulez considérer seulement la date ou seulement la partie heure, vous pouvez indiquer ceci au compilateur. Pour soutenir ceci, le type de données date-heure fournit une série de lettres que vous pouvez utiliser pour formater la manière dont sa valeur devrait être affichée à l'utilisateur. Le caractère est écrit dans le placeholder de la variable date-heure après le 0 ou la valeur numérique par incrémentation. |
|
|
using System;
namespace GeorgetownCleaningServices4
{
class OrderProcessing
{
static void Main()
{
// Price of items
const decimal PriceOneShirt = 0.95M;
const decimal PriceAPairOfPants = 2.95M;
const decimal PriceOneDress = 4.55M;
const decimal TaxRate = 0.0575M; // 5.75%
// Basic information about an order
string CustomerName, HomePhone;
DateTime OrderDate, OrderTime;
// Unsigned numbers to represent cleaning items
uint NumberOfShirts, NumberOfPants, NumberOfDresses;
// Each of these sub totals will be used for cleaning items
decimal SubTotalShirts, SubTotalPants, SubTotalDresses;
// Values used to process an order
decimal TotalOrder, TaxAmount, SalesTotal;
decimal AmountTended, Difference;
Console.WriteLine("-/- Georgetown Cleaning Services -/-");
// Request order information from the user
Console.Write("Enter Customer Name: ");
CustomerName = Console.ReadLine();
Console.Write("Enter Customer Phone: ");
HomePhone = Console.ReadLine();
Console.Write("Enter the order date(mm/dd/yyyy): ");
OrderDate = DateTime.Parse(Console.ReadLine());
Console.Write("Enter the order time(hh:mm AM/PM): ");
OrderTime = DateTime.Parse(Console.ReadLine());
// Request the quantity of each category of items
Console.Write("Number of Shirts: ");
NumberOfShirts = uint.Parse(Console.ReadLine());
Console.Write("Number of Pants: ");
NumberOfPants = uint.Parse(Console.ReadLine());
Console.Write("Number of Dresses: ");
NumberOfDresses = uint.Parse(Console.ReadLine());
// Perform the necessary calculations
SubTotalShirts = NumberOfShirts * PriceOneShirt;
SubTotalPants = NumberOfPants * PriceAPairOfPants;
SubTotalDresses = NumberOfDresses * PriceOneDress;
// Calculate the "temporary" total of the order
TotalOrder = SubTotalShirts +
SubTotalPants +
SubTotalDresses;
// Calculate the tax amount using a constant rate
TaxAmount = TotalOrder * TaxRate;
// Add the tax amount to the total order
SalesTotal = TotalOrder + TaxAmount;
// Communicate the total to the user...
Console.WriteLine("\nThe Total order is: {0:C}",
SalesTotal);
// and request money for the order
Console.Write("Amount Tended? ");
AmountTended = decimal.Parse(Console.ReadLine());
// Calculate the difference owed to the customer
// or that the customer still owes to the store
Difference = AmountTended - SalesTotal;
Console.WriteLine();
// Display the receipt
Console.WriteLine("====================================");
Console.WriteLine("-/- Georgetown Cleaning Services -/-");
Console.WriteLine("====================================");
Console.WriteLine("Customer: {0}", CustomerName);
Console.WriteLine("Home Phone: {0}", HomePhone);
Console.WriteLine("Order Date: {0:D}", OrderDate);
Console.WriteLine("Order Time: {0:t}", OrderTime);
Console.WriteLine("------------------------------------");
Console.WriteLine("Item Type Qty Unit/Price Sub-Total");
Console.WriteLine("------------------------------------");
Console.WriteLine("Shirts {0} {1} {2}",
NumberOfShirts.ToString(),
PriceOneShirt.ToString("C"),
SubTotalShirts.ToString("C"));
Console.WriteLine("Pants {0} {1} {2}",
NumberOfPants.ToString(),
PriceAPairOfPants.ToString("C"),
SubTotalPants.ToString("C"));
Console.WriteLine("Dresses {0} {1} {2}",
NumberOfDresses.ToString(),
PriceOneDress.ToString("C"),
SubTotalDresses.ToString("C"));
Console.WriteLine("------------------------------------");
Console.WriteLine("Total Order: {0}",
TotalOrder.ToString("C"));
Console.WriteLine("Tax Rate: {0}",
TaxRate.ToString("P"));
Console.WriteLine("Tax Amount: {0}",
TaxAmount.ToString("C"));
Console.WriteLine("Net Price: {0}",
SalesTotal.ToString("C"));
Console.WriteLine("------------------------------------");
Console.WriteLine("Amount Tended: {0}",
AmountTended.ToString("C"));
Console.WriteLine("Difference: {0}",
Difference.ToString("C"));
Console.WriteLine("====================================");
}
}
}
|
-/- Georgetown Cleaning Services -/- Enter Customer Name: Antoinette Calhoun Enter Customer Phone: (703) 797-1135 Enter the order date(mm/dd/yyyy): 04/12/2002 Enter the order time(hh:mm AM/PM): 2:12 PM Number of Shirts: 5 Number of Pants: 2 Number of Dresses: 1 The Total order is: $16.07 Amount Tended? 20 ==================================== -/- Georgetown Cleaning Services -/- ==================================== Customer: Antoinette Calhoun Home Phone: (703) 797-1135 Order Date: Friday, April 12, 2002 Order Time: 2:12 PM ------------------------------------ Item Type Qty Unit/Price Sub-Total ------------------------------------ Shirts 5 $0.95 $4.75 Pants 2 $2.95 $5.90 Dresses 1 $4.55 $4.55 ------------------------------------ Total Order: $15.20 Tax Rate: 5.75 % Tax Amount: $0.87 Net Price: $16.07 ------------------------------------ Amount Tended: $20.00 Difference: $3.93 ==================================== |
|
|
||