展开全部
尾端对齐写了2种方法你可以参考 ,建议优先使用方法一.方法二还需要优化import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map.Entry;
public class PrintNameDemo {
public static void main(String[] args) throws Exception {
// 普通情况,比如已知名字e5a48de588b63231313335323631343130323136353331333337616536最大不超过15个字符,
System.out.println("方法一:");
for (int i = 9; i <12; i++) {
//注意这里是printf()表示格式化输出%15s 表示15个空格 i表示填充的数据
System.out.printf("%15s", i);
//换行
System.out.println();
}
System.out.println("方法二:");
Hashtable table = new Hashtable<>();
table.put("Aaron", 12);
table.put("张三", 22);
table.put("大A", 9);
table.put("TomandJerry", 6);
Iterator> it = table.entrySet().iterator();
int maxLen = 0;
while (it.hasNext()) {
int temp = it.next().getKey().length();
if (temp > maxLen) {
maxLen = temp;//找到table里名字最长的有多少位字符
}
}
//重新获得下Iterator 因为上次迭代器it已经移到最后了.
it = table.entrySet().iterator();
while (it.hasNext()) {
Entry e = it.next();
//这里才是方法二尾端对齐的核心代码
char[] cc = new char[maxLen];
//for (int i = 0; i
//cc[i] = '#';
//}
char[] cs = e.getKey().toCharArray();
int x = 0;
//覆盖最后的几个字符
for (int i = maxLen - cs.length; i
cc[i] = cs[x];
x++;
}
System.out.println(new String(cc) + "\t" + e.getValue());
}
}
}
输出结果
方法一:
9
10
11
方法二:
#########张三22
#########大A9
######Aaron12
TomandJerry6