在 Java 中使用 printf 将字符串右对齐

Posted

技术标签:

【中文标题】在 Java 中使用 printf 将字符串右对齐【英文标题】:Align a String to the right using printf in Java 【发布时间】:2021-09-30 17:02:14 【问题描述】:

我需要使用 Java 右对齐下一个输出:

class MyTree 

    public static void staircase(int n) 
        String myGraph = "#";
        for(int i=0; i<n; i++)
            for(int x = 0; x <=i; x++)
                if(x == i)
                    System.out.printf("%s\n", myGraph);
                else
                    System.out.printf("%s", myGraph);                    
                
            
        
    

我正在使用 printf 函数,但我卡住了,我尝试了不同的参数,但似乎没有任何效果;如果您有任何建议,请告诉我。

谢谢

【问题讨论】:

【参考方案1】:

除非您知道一条线的“长度”,否则您无法正确证明,而且没有办法知道这一点。并不是所有System.out的东西都可以联系到有这样的概念。

如果您事先知道,您可以使用%80s 例如。如果你不这样做,你想要的就是不可能的。

【讨论】:

酷,感谢您的提示,还有一个问题:如果每行的长度由变量确定,那么引用它的方法是什么,因为类似于 System.out.printf( %myvars, data) 不起作用,有什么提示吗? int len = 80; printf("%" + len + "s");【参考方案2】:

这是不可能的,java 输出流是如此抽象,以至于你基本上不知道你发送给它的数据在哪里结束。 案例场景: 有人将输出流设置为一个文件,那里会有正确的对齐方式吗?

【讨论】:

【参考方案3】:

这可以通过字符串格式实现。

看看这个链接Read More。

【讨论】:

【参考方案4】:

这种方法解决了问题:

class Result 
    public static void staircase(int n) 
        String myGraph = "#";
        String mySpace = " ";
        int numOfChars = 0;
        int i = 0;
        int j = 0;
        int k = 0;
        ArrayList<ArrayList<String>> gameBoard = new ArrayList<ArrayList<String>>();
        for(i=0; i<n; i++)
            gameBoard.add(new ArrayList<String>());
            numOfChars++;
            //fill of mySpace
            for(j=0; j<(n-numOfChars); j++)
                gameBoard.get(i).add(j, mySpace);
            
            //fill of myGraph
            for(k=j; k<n; k++)
                gameBoard.get(i).add(k, myGraph);
            
        
        
        //iterate the list
        for (i = 0; i < gameBoard.size(); i++)
            for (j = 0; j < gameBoard.get(i).size(); j++)
                System.out.print(gameBoard.get(i).get(j));
             
            System.out.println();
                
    

【讨论】:

以上是关于在 Java 中使用 printf 将字符串右对齐的主要内容,如果未能解决你的问题,请参考以下文章

c语言怎么让文字右对齐

shell之 printf 输出语句

Java中的右对齐字符串NumberFormat

对齐输出的c语言?

C语言输出如何右对齐?

C语言输出如何右对齐