如何在C#中按指定格式打印数组中的姓名、年龄与薪资?
修正C#员工数据对齐输出的方案
先明确你原代码的核心问题:
- 完全没必要用三维数组,这里仅需「员工数 × 单员工字段数」的二维结构即可
- 数组定义维度错误:
string[2,2,3]无法容纳3个员工数据,且初始化语法不匹配三维数组规则 - 循环索引逻辑错误:
Namelist[i,i,i]每次仅取一个对角元素,而非每个员工的完整三个字段 - 未使用格式化字符串,无法实现对齐效果
方案1:修正二维数组实现对齐输出
using System; namespace General_Employee_Data { class Program { static void Main(string[] args) { // 二维数组:行=员工数量,列=单员工的三个字段(姓名/年龄/薪资) string[,] employees = new string[3, 3] { { "Graham", "47", "500" }, { "Jess", "47", "250" }, { "David", "23", "100" } }; for (int i = 0; i < 3; i++) { // 格式化规则:姓名左对齐占8位,年龄/薪资右对齐占4位,保证每行对齐 Console.WriteLine("{0,-8} {1,4} {2,4}", employees[i, 0], employees[i, 1], employees[i, 2]); } } } }
方案2:使用元组列表(更贴合C#现代写法)
元组可以给字段命名,代码可读性更强:
using System; using System.Collections.Generic; namespace General_Employee_Data { class Program { static void Main(string[] args) { var employees = new List<(string Name, int Age, int Salary)> { ("Graham", 47, 500), ("Jess", 47, 250), ("David", 23, 100) }; foreach (var emp in employees) { Console.WriteLine("{0,-8} {1,4} {2,4}", emp.Name, emp.Age, emp.Salary); } } } }
最终输出效果
运行后会得到对齐的结果:
Graham 47 500 Jess 47 250 David 23 100
内容的提问来源于stack exchange,提问作者Gaz
相关产品推荐
相关产品推荐

