Java 如何修复打印数组时的奇怪格式,使用\t
我正在编写一个代码,它以升序或降序打印位置数组。但是,在12个位置中,有两个位置的格式都是错误的 代码: 我有一种感觉,这个问题是因为不同的字长,然而,这似乎并不影响最后几行(如明斯克和班加罗尔)。 我如何让所有目的地从同一条垂直线开始?Java 如何修复打印数组时的奇怪格式,使用\t,java,Java,我正在编写一个代码,它以升序或降序打印位置数组。但是,在12个位置中,有两个位置的格式都是错误的 代码: 我有一种感觉,这个问题是因为不同的字长,然而,这似乎并不影响最后几行(如明斯克和班加罗尔)。 我如何让所有目的地从同一条垂直线开始? 任何帮助都将不胜感激,谢谢 注意,它只影响第一个单词为8个或更多字符的行。\t前进到下一个制表符位置,通常是8个字符的倍数 要正确执行此操作,您必须对第一个单词进行遍历以找到最大长度,然后在打印时使用该长度在每个单词后插入正确数量的空格 例如,如果您确定最长的
任何帮助都将不胜感激,谢谢 注意,它只影响第一个单词为8个或更多字符的行。
\t
前进到下一个制表符位置,通常是8个字符的倍数
要正确执行此操作,您必须对第一个单词进行遍历以找到最大长度,然后在打印时使用该长度在每个单词后插入正确数量的空格
例如,如果您确定最长的第一个字是13个字符,并且您希望第二个字从偏移量16(位置17)开始,您将在长度为16的固定字段中打印第一个字。您是否尝试过
String.format(“%-12s%-12s”,源,目标)
?这将为每个字符串分配12个字符,但如果您觉得需要更多,请继续更改每个12
,以满足您的需要
以下是我尝试演示的内容:
public static void main(String[] args) {
String [][] arr = {
{ "Sources", "Destinations" },
{ "Baghdad", "Seoul" },
{ "Beijing", "Saitama" },
{ "Delhi", "Rome" },
{ "Fez", "Pune" },
{ "Havana", "Philadelphia" },
{ "Hiroshima", "Paris" },
{ "Istanbul", "Montreal" },
{ "Lagos", "Hyderabad" },
{ "London", "Hamburg" },
{ "Minsk", "Bengaluru" },
{ "Mumbai", "Athens" },
{ "Taipei", "Alexandria" }
};
for (String[] a : arr) {
System.out.printf("%-12s %-12s \n", a[0], a[1]);
}
}
获取输出:
Sources Destinations
Baghdad Seoul
Beijing Saitama
Delhi Rome
Fez Pune
Havana Philadelphia
Hiroshima Paris
Istanbul Montreal
Lagos Hyderabad
London Hamburg
Minsk Bengaluru
Mumbai Athens
Taipei Alexandria
将第一列打印为固定宽度@dyukha绝对不是重复的填充。@SilviuBurcea,当您的答案使用与此链接中的答案相同的方法时,会说一句奇怪的话。@dyukha这个问题更多的是关于表格格式的。虽然解决方案是相似的,但它并不相同,它回答了一个不同的问题。
public static void main(String[] args) {
String [][] arr = {
{ "Sources", "Destinations" },
{ "Baghdad", "Seoul" },
{ "Beijing", "Saitama" },
{ "Delhi", "Rome" },
{ "Fez", "Pune" },
{ "Havana", "Philadelphia" },
{ "Hiroshima", "Paris" },
{ "Istanbul", "Montreal" },
{ "Lagos", "Hyderabad" },
{ "London", "Hamburg" },
{ "Minsk", "Bengaluru" },
{ "Mumbai", "Athens" },
{ "Taipei", "Alexandria" }
};
for (String[] a : arr) {
System.out.printf("%-12s %-12s \n", a[0], a[1]);
}
}
Sources Destinations
Baghdad Seoul
Beijing Saitama
Delhi Rome
Fez Pune
Havana Philadelphia
Hiroshima Paris
Istanbul Montreal
Lagos Hyderabad
London Hamburg
Minsk Bengaluru
Mumbai Athens
Taipei Alexandria