Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String.format向整数添加空格_Java - Fatal编程技术网

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