【问题标题】:having formatting error in c#在 C# 中出现格式错误
【发布时间】:2016-08-24 21:05:22
【问题描述】:
static void Main(string[] args)
{
    OpenFiles(); PrintReportHeadings();
    while ((lineIn = fileIn.ReadLine()) != null)
    {
        ParseLineIn();

        PrintDetailLine();
        Computing();
        sides++;
    }


    CloseFiles();

}

static void PrintDetailLine()
{
    Console.WriteLine("{0,2}  {1}", sides, polyName);        
}

static void Computing()
{
    for (n = 1; n <= 9; n++)
    {
        p = (Math.Pow(n, 2) * (sides - 2) - n * (sides - 4)) / 2;
        Console.Write("{0}", p);
    }
}

这是我正在使用的代码。我将报告标题放在需要的位置,并且在从文件中读取多边形名称时,它们会以边数进入正确的位置。但是当试图计算多边形数中的第 n 个点时,它将多边形的边数和多边形的名称推到右侧。不知道我做错了什么。现在已经盯着这个4个小时了。

【问题讨论】:

  • 我想如果你有 {0,2} 它有 2 个位置。它不会给我一个编译器错误或任何东西
  • 你能给出一个列表string[]你读到的要复制的行吗?
  • Triangular Square Pentagonal Hexagonal Heptagonal Octagonal Nonagonal Decagonal Hendecagonal Dodecagonal Tridecagonal Tetradecagonal Pentadecagonal Hexadecagonal Heptadecagonal Octadecagonal Nonadecagonal Icosagonal Icosihenagonal Icosidigonal Icositrigonal Icositetragonal 就是它读取的全部内容。只有 24 个多边形
  • Tiangle 有 5 个边:-O?我假设每个都是边长?
  • 在表格中,按边数分类。从3-24开始。然后列出形状,然后列出这么多点组成一侧时所需的第 n 个点

标签: c# number-formatting


【解决方案1】:

这就是你所追求的吗?

输出:

 3       Triangular   1   3   6  10  15  21  28  36  45
 4           Square   1   4   9  16  25  36  49  64  81
 5       Pentagonal   1   5  12  22  35  51  70  92 117
 6        Hexagonal   1   6  15  28  45  66  91 120 153
 7       Heptagonal   1   7  18  34  55  81 112 148 189
 8        Octagonal   1   8  21  40  65  96 133 176 225
 9        Nonagonal   1   9  24  46  75 111 154 204 261
10        Decagonal   1  10  27  52  85 126 175 232 297
11     Hendecagonal   1  11  30  58  95 141 196 260 333
12      Dodecagonal   1  12  33  64 105 156 217 288 369
13     Tridecagonal   1  13  36  70 115 171 238 316 405
14   Tetradecagonal   1  14  39  76 125 186 259 344 441
15   Pentadecagonal   1  15  42  82 135 201 280 372 477
16    Hexadecagonal   1  16  45  88 145 216 301 400 513
17   Heptadecagonal   1  17  48  94 155 231 322 428 549
18    Octadecagonal   1  18  51 100 165 246 343 456 585
19    Nonadecagonal   1  19  54 106 175 261 364 484 621
20       Icosagonal   1  20  57 112 185 276 385 512 657
21   Icosihenagonal   1  21  60 118 195 291 406 540 693
22     Icosidigonal   1  22  63 124 205 306 427 568 729
23    Icositrigonal   1  23  66 130 215 321 448 596 765
24  Icositetragonal   1  24  69 136 225 336 469 624 801
Press any key to continue . . .

源代码:

class Program
{
    static int sides = 3;
    private static int maxPolyNameLength;

    static void Main(string[] args)
    {
        var input = "Triangular Square Pentagonal Hexagonal Heptagonal Octagonal Nonagonal Decagonal Hendecagonal Dodecagonal Tridecagonal Tetradecagonal Pentadecagonal Hexadecagonal Heptadecagonal Octadecagonal Nonadecagonal Icosagonal Icosihenagonal Icosidigonal Icositrigonal Icositetragonal"
            .Split(' ');

        maxPolyNameLength = input.Max(x => x.Length);


        foreach (var s in input)
        {
            PrintDetailLine(s);
            Computing();
            Console.WriteLine();
            sides++;

        }

    }

    static void PrintDetailLine(string polyName)
    {
        Console.Write($"{{0,2}}  {{1,{maxPolyNameLength}}} ", sides, polyName);
    }

    static void Computing()
    {
        double p = 0;


        for (var n = 1; n <= 9; n++)
        {
            p = (Math.Pow(n, 2) * (sides - 2) - n * (sides - 4)) / 2;
            Console.Write("{0,3} ", p);
        }
    }
}

【讨论】:

  • 是的!确切地说,但我需要格式化以适合表格的数字。我将在一秒钟内发布一个图片示例。
  • 我还不确定 var 是什么,还没有做到那么远。我仍然需要计算倒数的总和并将其放在最后一列
  • var 只是一种指定类型的懒惰方式(它的类型是从分配给它的变量中推断出来的)。在var input 的情况下,它与string[] input 相同,因为"xxxxx".Split() 返回一个string[](字符串数组)
  • 好的,唯一的问题是我应该使用 streamreader 从文件中读取多边形名称,而不是自己直接在代码中输入名称
  • 那没关系,把foreach (var s in input)改成你的while ((lineIn = fileIn.ReadLine()) != null)
猜你喜欢
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多