如何创建带表头的含数字与字符的数组表格?Java实现咨询
解决Java中存储多字符表格数据的问题
你遇到的核心问题是:char[][]数组只能存储单个字符,但你需要存储的是字符串类型的数据(比如"01"、"Dr.Ali"、"8-10 p.m"),所以char数组完全不适合这个场景。下面给你两种实用的解决方案:
方案1:用String[][]二维数组快速实现表格
直接用字符串数组存储每一行的完整数据,再搭配格式化输出就能得到整齐的表格:
public class DoctorSchedule { public static void main(String[] args) { // 定义表头 String[] headers = {"No.Room", "Doctor Name", "Time"}; // 定义表格数据,每一行对应一个预约项 String[][] schedule = { {"01", "Dr.Ali", "8-10 p.m"}, {"02", "Dr.Sara", "1-3 p.m"}, {"03", "Dr.Nora", "3-5 p.m"}, {"04", "Dr.Ryan", "10-12 a.m"}, {"05", "Dr.Mia", "3-5 p.m"} }; // 打印表头,用格式化输出保证列对齐 for (String header : headers) { System.out.printf("%-15s", header); } System.out.println(); // 打印分隔线(可选,让表格更清晰) System.out.println("---------------------------------------------"); // 打印表格内容 for (String[] row : schedule) { for (String cell : row) { System.out.printf("%-15s", cell); } System.out.println(); } } }
代码说明:
String[][]可以直接存储任意长度的字符串,完美适配你的需求%-15s是格式化输出语法,表示左对齐、占15个字符宽度,能让表格列对齐更整齐- 表头和数据分开定义,逻辑更清晰易维护
方案2:用自定义类(面向对象的规范写法)
如果后续需要扩展功能(比如修改医生信息、添加预约),创建一个类封装数据会更灵活:
class DoctorAppointment { private String roomNumber; private String doctorName; private String timeSlot; // 构造方法,初始化预约信息 public DoctorAppointment(String roomNumber, String doctorName, String timeSlot) { this.roomNumber = roomNumber; this.doctorName = doctorName; this.timeSlot = timeSlot; } // 打印当前预约的格式化信息 public void printInfo() { System.out.printf("%-15s%-15s%-15s%n", roomNumber, doctorName, timeSlot); } // 可选:添加getter/setter方法,方便后续修改或获取数据 public String getRoomNumber() { return roomNumber; } public void setRoomNumber(String roomNumber) { this.roomNumber = roomNumber; } } public class DoctorSchedule { public static void main(String[] args) { // 打印表头 System.out.printf("%-15s%-15s%-15s%n", "No.Room", "Doctor Name", "Time"); System.out.println("---------------------------------------------"); // 创建预约对象列表 DoctorAppointment[] appointments = { new DoctorAppointment("01", "Dr.Ali", "8-10 p.m"), new DoctorAppointment("02", "Dr.Sara", "1-3 p.m"), new DoctorAppointment("03", "Dr.Nora", "3-5 p.m"), new DoctorAppointment("04", "Dr.Ryan", "10-12 a.m"), new DoctorAppointment("05", "Dr.Mia", "3-5 p.m") }; // 遍历打印所有预约信息 for (DoctorAppointment appt : appointments) { appt.printInfo(); } } }
为什么不适合用char[][]?
你之前的代码用char[][]只能存单个字符,比如房间号"01"需要两个char,医生姓名"Dr.Ali"需要多个char,拼接和存储都会非常繁琐——Java提供了String类型专门处理多字符文本,直接用它就好啦。
内容的提问来源于stack exchange,提问作者adina lokman
相关产品推荐
相关产品推荐

