在 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 将字符串右对齐的主要内容,如果未能解决你的问题,请参考以下文章