在控制台应用程序中格式化输出

0 c#

我在格式化字符串时遇到问题:

Console.WriteLine("SSN: {0}   Gross: {1}   Tax: {2}", t[x].SSN, t[x].Gross.ToString("C"), t[x].Tax.ToString("C"));
Run Code Online (Sandbox Code Playgroud)

它应该打印:

SSN            Gross         Tax
123456789    $30,000.00     $8400.00
Run Code Online (Sandbox Code Playgroud)

完整代码如下:

using System;

namespace TaxPayerDemo
{
    class Program
    {
        static void Main()
        {
            TaxPayer[] t = new TaxPayer[10];
            int x;

            for(x = 0; x < t.Length; ++x)
            {
                // Stores SSN 
                t[x] = new TaxPayer();
                Console.Write("Please enter your SSN >> ");
                t[x].SSN = Console.ReadLine();

                // Stores Gross Income
                Console.Write("Please enter your income >> ");
                t[x].Gross = Convert.ToDouble(Console.ReadLine());
            }

            for (x = 0; x < t.Length; ++x)
            {
                t[x].calcTax();
                Console.WriteLine();
                Console.WriteLine("SSN: {0}   Gross: {1}   Tax: {2}", t[x].SSN, t[x].Gross.ToString("C"),
                    t[x].Tax.ToString("C"));
                         }
            Console.ReadKey();
        }
    }

    class TaxPayer
    {
        private const double LOW_TAXRATE = 0.15;
        private const double HIGH_TAXRATE = 0.28;

        public double Tax { get; set; }
        public double Gross { get; set; }
        public string SSN { get; set; }

        public void calcTax()
        {
            if (Gross < 30000)
            {
                Tax = LOW_TAXRATE * Gross;
            }
            if (Gross >= 30000)
            {
                Tax = HIGH_TAXRATE * Gross;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fer*_*oto 5

有关字符串格式如何工作的信息,请查看复合格式。为了对齐文本,请使用以下格式{0,min_width}

Console.WriteLine("SSN            Gross          Tax");
Console.WriteLine("{0,-15}{1,-15}{2,-15}", t[x].SSN, t[x].Gross.ToString("C"), t[x].Tax.ToString("C"));
Run Code Online (Sandbox Code Playgroud)

这将使值与标题对齐。随意将 15 更改为任何其他值;只需记住在标题中添加正确的间距(在“SSN”、“Gross”和“Tax”之间)。

请注意,我使用的最小宽度为 -15。这-意味着文本将左对齐。改用正数使其右对齐。