c# - 将数组打印为表 c#

标签 c# arrays printing

我无法让我的程序整齐有序地打印出一组 Employee 类对象。我将证明我的代码,有人可以让我知道我将如何构建我的 write 语句来实现这一点。

实际输出是什么:

Bruce Wayne, 123456, 25.88, 35.50
Clark Kent 232344 25.88 38.75
Diana Prince 657659 27.62 30.25
Hal Jordan 989431 23.14 44.25
Barry Allan 342562 25.12 25.50
Arthur Curry 565603 21.09 23.75
John Jones 812984 18.99 32.75
Dinah Lance 342988 18.99 34.50
Oliver Queen 340236 17.45 41.25
Ray Palmer 120985 24.75 40.00
Ronald Raymond 239824 16.43 35.00
Carter Hall 657123 19.34 42.75
Shayera Hol 761742 16.73 38.50

输出应该是什么:

Bruce Wayne    123456 25.88 35.50
Clark Kent     232344 25.88 38.75
Diana Prince   657659 27.62 30.25
Hal Jordan     989431 23.14 44.25
Barry Allan    342562 25.12 25.50
Arthur Curry   565603 21.09 23.75
John Jones     812984 18.99 32.75
Dinah Lance    342988 18.99 34.50
Oliver Queen   340236 17.45 41.25
Ray Palmer     120985 24.75 40.00
Ronald Raymond 239824 16.43 35.00
Carter Hall    657123 19.34 42.75
Shayera Hol    761742 16.73 38.50

// This is from the Employee class.
public void PrintEmployee()
{
    Console.WriteLine(name + " " + number + " " + rate + " " + hours + " 
    " + gross);
}

// This is from main program.
for (int i = 0; i < Employees.Length; i++)
{
    if (Employees[i] == null)
    {
        break;
    }
    Employees[i].PrintEmployee();
 }

如果您需要更多代码,请告诉我。 另外,如果有人知道打印表格的更好方法,请告诉我。 非常感谢所有帮助。

最佳答案

如果查看 String.PadRight() method ,您会发现它用空白字符填充一个字符串,直到它达到指定的宽度。我们可以对名称字段执行此操作,选择一些合理的最大名称长度(可能是 25?)来调整列的大小。

此外,您可以考虑覆盖 Employee 类的 ToString() 方法,而不是 PrintEmployee 方法,因此默认employee.ToString() 将按照您想要的方式显示。例如:

public class Employee
{
    public string Name { get; set; }
    public int Number { get; set; }
    public double Rate { get; set; }
    public double Hours { get; set; }

    public override string ToString()
    {
        return $"{Name.PadRight(20)} {Number} {Rate:00.00} {Hours:00.00}";
    }
}

现在我们已经在 20 个字符的列中显示了名称(并且 double 显示有适当的小数位),事情应该排列得很好:

static void Main()
{
    var employees = new List<Employee>
    {
        new Employee {Name = "Bruce Wayne", Number = 123456, Rate = 25.88, Hours = 35.5},
        new Employee {Name = "Clark Kent", Number = 232344, Rate = 25.88, Hours = 38.75},
        new Employee {Name = "Diana Prince", Number = 657659, Rate = 27.62, Hours = 30.25},
        new Employee {Name = "Hal Jordan", Number = 989431, Rate = 23.14, Hours = 44.25},
        new Employee {Name = "Barry Allan", Number = 342562, Rate = 25.12, Hours = 25.50},
        new Employee {Name = "Arthur Curry", Number = 565603, Rate = 21.09, Hours = 23.75},
        new Employee {Name = "John Jones", Number = 812984, Rate = 18.99, Hours = 32.75},
        new Employee {Name = "Dinah Lance", Number = 342988, Rate = 18.99, Hours = 34.50},
        new Employee {Name = "Oliver Queen", Number = 340236, Rate = 17.45, Hours = 41.25},
        new Employee {Name = "Ray Palmer", Number = 120985, Rate = 24.75, Hours = 40.00},
        new Employee {Name = "Ronald Raymond", Number = 239824, Rate = 16.43, Hours = 35.00},
        new Employee {Name = "Carter Hall", Number = 657123, Rate = 19.34, Hours = 42.75},
        new Employee {Name = "Shayera Hol", Number = 761742, Rate = 16.73, Hours = 38.50},
    };

    foreach (var employee in employees)
    {
        Console.WriteLine(employee);
    }

    Console.Write("\nDone!\nPress any key to exit...");
    Console.ReadKey();
}

输出

enter image description here

关于c# - 将数组打印为表 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46458165/

相关文章:

c# - 为什么带有运算符的一个 lambda 表达式可以工作,而另一个则不行

c# - C# .net 中的 win32 dll

python - 如何搜索数组列表

c++ - 在 C++ 中使用 sort() 对二维字符数组进行排序

java - 遍历数组,android dev

c# - 从 Web 应用程序打印到客户端打印机

printing - 如何通过ZPL改变条码的字体大小?

c# - ASP.NET 元素中弹出窗口的全局设置在哪里?

c# - 识别行数据绑定(bind)事件中的单元格列标题名称

c# - 清除 PrintDocument