c# - 循环输出的居中文本

标签 c#

我正在开发一个温度转换器,最后程序必须以一种安排的方式将华氏温度转换为摄氏度,反之亦然,就像这里的图片

Example

意味着 C、F 和 = 必须在每一行上对齐,我尝试了 string.Format 但它只会给我错误。

 for (Farenheit = 0; Farenheit <= maxFarenheit; Farenheit = Farenheit + 5)
        {
            Celsius = 5 / 9.0 * (Farenheit - 32);
            Celsius = Math.Round(Celsius, 2);
            Console.WriteLine(Farenheit + " F = " + Celsius + " C");
        }

这是循环

最佳答案

如果你愿意

  0.00 C =  32.00 F
  4.00 C =  39.20 F
  8.00 C =  46.40 F
 12.00 C =  53.60 F
 16.00 C =  60.80 F
 20.00 C =  68.00 F
 24.00 C =  75.20 F
 28.00 C =  82.40 F
 32.00 C =  89.60 F
 36.00 C =  96.80 F
 40.00 C = 104.00 F
 44.00 C = 111.20 F
 48.00 C = 118.40 F

使用格式指定内插字符串内的列宽。这是通过 $"{value,width:format}" 完成的。请参阅下面的示例代码:

由于这是 C# 且面向对象,因此创建一个类来处理数学是有意义的。

public class Temperature
{
    public float Celsius { get; set; }
    public float Fahrenheit 
    {
        get
        {
            return 32f + (9f * Celsius) / 5f;
        }
        set
        {
            Celsius = 5f * (value - 32F) / 9F;
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        Temperature temperature = new Temperature();
        for (int i = 0; i <= 12; i++)
        {
            temperature.Celsius = 4f * i;

            Console.WriteLine($"{temperature.Celsius,6:F2} C = {temperature.Fahrenheit,6:F2} F");
        }
    }
}

此处 6 的值指定该值将占用的总宽度(6 个空格),并且默认情况下是对齐的。要使值左对齐,请使用负值,例如 -6

此外,说明符 F2 表示在点右侧显示两位小数。对于浮点值,请使用 g4 等说明符进行一般格式设置,使用 f4 进行固定小数位数,使用 e4 进行科学记数法。

可以进行改进以在类中包含字符串格式,如下面的代码所示,具有相同的结果。

public class Temperature
{
    public float Celsius { get; set; }
    public float Farenheit
    {
        get
        {
            return 32f + (9f * Celsius) / 5f;
        }
        set
        {
            Celsius = 5f * (value - 32F) / 9F;
        }
    }
    public override string ToString()
    {
        return $"{Celsius,6:F2} C = {Fahrenheit,6:F2} F";
    }
}

class Program
{
    static void Main(string[] args)
    {
        Temperature temperature = new Temperature();
        for (int i = 0; i <= 12; i++)
        {
            temperature.Celsius = 4f * i;

            Console.WriteLine(temperature);
        }
    }
}

这里的关键是重写系统用来将对象转换为字符串值的ToString()函数。它由 Console.WriteLine() 函数自动调用,重点是所有格式设置都可以在类内部处理。

关于c# - 循环输出的居中文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73860432/

相关文章:

c# - 带有 Action<T> 参数重载的模糊方法调用

c# - 如何使用 C# 从 PNG 文件中获取字节

c# - 来自字符串的日期时间分别添加时间和日期

c# - 如何使用 Entity Framework 6.1 返回 dataReader?

c# - 从不同项目的 appsettings.json 中读取多个连接字符串

c# - 添加新 WebForm 时 Visual Studio 2015 中的错误

c# - 尝试使用代码将一行插入数据库,然后在单击按钮后显示该行(使用 CommandText)

c# - BinaryFormatter.Deserialize 如何创建新对象?

c# - 如何在 SQLite.net 中存储对象列表?

c# - 如何根据条件从linq查询中获取100条记录