在方法中,我有以下代码:
s = s + (items[i] + ":" + numItems[i]+" @ "+prices[i]+" cents each.\n");
哪个输出:
Candy: 5 @ 50 cents each.
Soda: 3 @ 10 cents each.
等等。 。 。
在这一行中,我如何获得5,3等。 。彼此排列,以便:
Candy: 5 @ 50 cents each.
Soda: 3 @ 10 cents each.
这是toString()
方法的一部分,因此我无法使用System.out.printf
答案 0 :(得分:1)
可以使用String.format()和Formatter类。
以下代码将输出类似
的内容 /*
Sample Text #
Sample Text#
*/
代码
public static String padRight(String s, int n) {
return String.format("%1$-" + n + "s", s);
}
public static String padLeft(String s, int n) {
return String.format("%1$" + n + "s", s);
}
public static void main(String args[]) throws Exception {
System.out.println(padRight("Sample Text", 15) + "#");
System.out.println(padLeft("Sample Text", 15) + "#");
}
一些格式化代码片段
String.format("%5s", "Hi").replace(' ', '*');
String.format("%-5s", "Bye").replace(' ', '*');
String.format("%5s", ">5 chars").replace(' ', '*');
输出:
***Hi
Bye**
>5*chars
除了这个Apache StringUtils API有很多方法,比如rightPad,leftPad这样做。 Link
答案 1 :(得分:0)
您可以在toString()
中使用制表符\t
以下是一个例子:
System.out.println("Candy \t 5");
System.out.println("Soda \t 10");
Candy 5
Soda 10
所以在你的情况下
s = s + (items[i] + ": \t" + numItems[i]+" @ "+prices[i]+" cents each.\n");
答案 2 :(得分:0)
您可以使用\ t来插入标签。
答案 3 :(得分:0)
试试这个
s = s + (makeFixedLengthString(items[i]) + ":" + numItems[i]+" @ "+prices[i]+" cents each.\n");
public String makeFixedLengthString(String src){
int len = 15;
for(int i = len-src.length(); i < len; i++)
src+=" ";
return src;
}