Java 如何修复打印数组时的奇怪格式,使用\t

Java 如何修复打印数组时的奇怪格式,使用\t,java,Java,我正在编写一个代码,它以升序或降序打印位置数组。但是,在12个位置中,有两个位置的格式都是错误的 代码: 我有一种感觉,这个问题是因为不同的字长,然而,这似乎并不影响最后几行(如明斯克和班加罗尔)。 我如何让所有目的地从同一条垂直线开始? 任何帮助都将不胜感激,谢谢 注意,它只影响第一个单词为8个或更多字符的行。\t前进到下一个制表符位置,通常是8个字符的倍数 要正确执行此操作,您必须对第一个单词进行遍历以找到最大长度,然后在打印时使用该长度在每个单词后插入正确数量的空格 例如,如果您确定最长的

我正在编写一个代码,它以升序或降序打印位置数组。但是,在12个位置中,有两个位置的格式都是错误的

代码:

我有一种感觉,这个问题是因为不同的字长,然而,这似乎并不影响最后几行(如明斯克和班加罗尔)。 我如何让所有目的地从同一条垂直线开始?
任何帮助都将不胜感激,谢谢

注意,它只影响第一个单词为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