Java String.format向整数添加空格
我有一小段代码,我不理解输出 此输出为我的字符串格式文本添加空格。我做错了什么Java String.format向整数添加空格,java,Java,我有一小段代码,我不理解输出 此输出为我的字符串格式文本添加空格。我做错了什么 public class HelloWorld{ public static void main(String []args){ int a1 = 540; int a2 = 492; int a3 = 200; int a4 = 500; int a5 = 600; String a = "/share.ht
public class HelloWorld{
public static void main(String []args){
int a1 = 540;
int a2 = 492;
int a3 = 200;
int a4 = 500;
int a5 = 600;
String a = "/share.html?title=%1s&description=%2s&image=%3s&width=%4s&height=%5s";
String b = String.format(a, a1, a2, a3, a4, a5);
System.out.println(b);
}
}
输出为:
/share.html?title=540&description=492&image=200&width= 500&height= 600
为什么最后一个宽度和高度上有空格?请从格式说明符中删除数字:
String a = "/share.html?title=%s&description=%s&image=%s&width=%s&height=%s";
在格式说明符中使用数值,就像您所做的那样,您正在指定输出的最小宽度——这就是为什么前三个值看不到任何空格的原因
如果要引用特定参数,而不是让格式化程序按照指定的顺序对其求值,可以以n$
的形式指定参数索引,其中n是引用参数的索引(如1$
,2$
,…)
有关更多信息,请参见
除了
%s
,您还可以指定%d
,因为您的所有参数都是int
类型,因为您添加了长度为4和5的字符串,并且您的值只有3个字符
您应该使用%d
格式化十进制
s
前面的数字是长度而不是位置。%4s
表示总共输出4个字符。你的号码有3个字符。因此,它显示一个“
。因此,您需要从格式字符串中删除所有数字。尝试以下操作:
int a1 = 540;
int a2 = 492;
int a3 = 200;
int a4 = 500;
int a5 = 600;
String a = "/share.html?title=%s&description=%s&image=%s&width=%s&height=%s";
String b = String.format(a, a1, a2, a3,a4,a5);
System.out.println(b);
让我知道它是否有效
如果您试图引用参数索引,则在数字后面需要一个$
,例如:
height=%5$s
但是,由于您只按顺序使用了一次参数,因此可以简单地使用:
height=%s
我想你的意思是
%1$s
,%2$s
,%3$s
,%4$s
等等。或者简单地说,%s
默认情况下,“Java的格式化程序不使用位置标识符引用相应的参数”,是的。但是您可以指定参数索引。您还应该建议更改为%d
,因为值是int
。不是“总计”,而是“至少”。
height=%s