【问题标题】:How to align using printf [duplicate]如何使用 printf 对齐 [重复]
【发布时间】:2014-12-18 18:55:03
【问题描述】:

我有两个 printf,它们是分开的,因为一个正在循环,我无法对齐其中一个 printf。我希望它排在朋友下面。

什么是打印

Member                     Friends             
Chi Cho                 Joe Blow
                 Jimmy Brown
Status: 

Joe Blow                 John Ko
Status: Coding like a friend

Tammy Joe                 Joe Johnson
Status: this is great

Bing Smith                 John Brown
Status: This sucks

我想要得到什么

Member                     Friends             
Chi Cho                    Joe Blow
                           Jimmy Brown
Status: 

Joe Blow                   John Ko
Status: Coding like a friend

Tammy Joe                  Joe Johnson
Status: this is great

Bing Smith                 John Brown
Status: This sucks

for (int i = 0 ; i< profiles; i++)
    {
    String arrayName = face.get(i).getName();       
    String statusName = face.get(i).getStatus();

    LinkedList<String> linkName = face.get(i).getFriend();
    String realname ="";
    System.out.printf("%-5.20s" ,arrayName);
    for(String toname : linkName)   
    System.out.printf("                 %-5.20s%n" ,toname);    
    System.out.println("Status: " + statusName);
    System.out.println();
    }

【问题讨论】:

  • 如果从第二个 printf 中删除空格会发生什么?如果没有更好的选择,您能否提供一个可以自行编译和运行的示例?
  • 它只是在另一个打印语句旁边打印
  • 如果你将 for 循环更改为:for(String toname : linkName) { System.out.printf("%-5.20s", " "); System.out.printf("%-5.20s%n" , toname); } ?
  • 不,这不起作用,给我同样的东西

标签: java printing printf


【解决方案1】:

尝试使用 System.out.println()与你想要的尽可能多的制表符(8 个空格)空格一样
System.out.println("Member" "friends") 你可以使用 + 运算符在两者之间添加你的 ans

【讨论】:

    【解决方案2】:

    我使用以下代码让它工作(我将 linkName 变量更改为 String 数组,将 face 类更改为这些字符串数组的 ArrayList 以使其在我的计算机上运行):

    public static void main(String[] args) {
        ArrayList<String[]> profiles = new ArrayList<>();
        profiles.add(new String[] { "John", "Elisabeth", "John Snow" });
        profiles.add(new String[] { "John Snow", "Elisabeth W.", "George Palin" });
        profiles.add(new String[] { "John Eduard", "Annabelle", "Mike" });
    
        for (int i = 0 ; i < profiles.length; i++) {
            String arrayName = "Name";       
            String statusName = "Married";
    
            String[] linkName = profiles.get(i);
            String realname = "";
    
            System.out.printf("%-20s", arrayName);
    
            for (String toname : linkName) {
                System.out.printf("%-20s", toname);
                System.out.println();
    
                // If the current toname isn't the last element in the linkName array.
                if (toname != linkName[linkName.length - 1]) {
                    System.out.printf("%-20s", "");
                }
            }
    
            System.out.println("Status: " + statusName);
            System.out.println();
        }
    }
    

    输出:

    Name                John
                        Elisabeth
                        John Snow
    Status: Married
    
    Name                John Snow
                        Elisabeth W.
                        George Palin
    Status: Married
    
    Name                John Eduard
                        Annabelle
                        Mike
    Status: Married
    

    编辑:这是对您的代码的实际更正:

    for (int i = 0 ; i < profiles; i++) {
        String arrayName = face.get(i).getName();       
        String statusName = face.get(i).getStatus();
    
        LinkedList<String> linkName = face.get(i).getFriend();
        String realname = "";
        System.out.printf("%-20s", arrayName);
    
        for (String toname : linkName) {
            System.out.printf("%-20s", toname);
            System.out.println();
    
            if (toname != linkName.get(linkName.length - 1)) {
                System.out.printf("%-20s", "");
            }
        }   
    
        System.out.println("Status: " + statusName);
        System.out.println();
    }
    

    【讨论】:

    • 谢谢,但我需要 if not 语句,就好像它是链接列表而不是数组一样。你知道怎么做吗?
    • 当然,您只需将正确的变量更改为您想要的变量即可。好吧,我将编辑适合你的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2022-01-11
    相关资源
    最近更新 更多