我无法让我的程序整齐有序地打印出一组 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();
}
输出
关于c# - 将数组打印为表 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46458165/