如何在Java的toString方法中实现degree与university对齐排版?
解决Degree与University对齐问题
你的问题出在固定空格缩进——年份字符串长度不固定(比如"2023"是4位,"2019 to 2023"是11位),固定数目的空格自然没法让degree始终对齐到university的开头。
直接修改toString方法,动态计算缩进长度即可:
方案一:手动计算空格
@Override public String toString() { // 把year转成字符串(如果year是数字类型,用String.valueOf(year)) String yearStr = year; // 计算缩进长度:年份长度 + 年份与university之间的8个空格 int indentLength = yearStr.length() + 8; // 生成对应长度的空格字符串 String degreeIndent = " ".repeat(indentLength); return "Education" + System.lineSeparator() + yearStr + " " + university + System.lineSeparator() + degreeIndent + degree; }
方案二:用String.format简化
@Override public String toString() { String yearStr = String.valueOf(year); // 用格式化字符串动态指定缩进宽度 return String.format("Education%n%s %s%n%" + (yearStr.length() + 8) + "s", yearStr, university, degree); }
原理说明
不管year是短字符串还是长字符串,我们都先计算它的长度,再加上年份和university之间的8个空格,让degree前面的空格总长度等于「年份字符串长度+分隔空格数」,这样degree就会精准对齐到university的起始位置,完美匹配你要的效果。
内容的提问来源于stack exchange,提问作者HGSu
相关产品推荐
相关产品推荐

