java 中左对齐的数字以及百分比 %

Left justified number along with percentage % in java

我正在尝试显示带有左对齐百分号的数字以及其他整数和字符串。为此,我在 java 中使用字符串格式。我几乎明白了,但是当十位数移动到百位数时卡住了。例如:

public class Test1 {

public static void main(String args[]){
int per1= 100,g1=3;
String name1="AAA PPPP";
int per2= 55,g2=4;
String name2="BBB QQQ";
int per3= 24,g3=7;
String name3="CCC RRRRR";

System.out.println(String.format("%-3d%% | %02d strike | %s",per1,g1,name1));
System.out.println(String.format("%-3d%% | %02d strike | %s",per2,g2,name2));
System.out.println(String.format("%-3d%% | %02d strike | %s",per3,g3,name3));

}

}

目前,我得到的输出是这样的

100% | 03 strike | AAA PPPP
55 % | 04 strike | BBB QQQ
24 % | 07 strike | CCC RRRRR

但预期是

100% | 03 strike | AAA PPPP
55%  | 04 strike | BBB QQQ
24%  | 07 strike | CCC RRRRR

我现在卡的很厉害。我知道这很棘手,但我仍在努力寻找答案。请帮助人们。

这可能有点矫枉过正,但它确实有效:

public class Test1 {

    public static void main(String args[]){

        int per1= 100, g1=3;

        String name1="AAA PPPP";

        int per2= 55, g2=4;

        String name2="BBB QQQ";

        int per3= 24, g3=7;

        String name3="CCC RRRRR";

        String space = "";

        System.out.println(String.format("%d%%%-" + (4 - String.valueOf(per1).length()) + "s| %02d strike | %s", per1, space, g1, name1));
        System.out.println(String.format("%d%%%-" + (4 - String.valueOf(per2).length()) + "s| %02d strike | %s", per2, space, g2, name2));
        System.out.println(String.format("%d%%%-" + (4 - String.valueOf(per3).length()) + "s| %02d strike | %s", per3, space, g3, name3));
    }
}

输出:

100% | 03 strike | AAA PPPP
55%  | 04 strike | BBB QQQ
24%  | 07 strike | CCC RRRRR