枚举:
public enum tuna {
Veyron("Speed", "R1"),
Reventon("Speed", "R3"),
MclarenF1("Speed", "R3");
public final String style;
public final String theclass;
tuna(String thestyle, String theclasss){
style = thestyle;
theclass = theclasss;
}
public String getStyle(){
return style;
}
public String getClasss(){
return theclass;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我不理解的主类中的代码:
int maxlength = tuna.Veyron.name().length();
for( tuna cars : tuna.values() ) {
System.out.format( "%-" + maxlength + "s %-5s %5s\n", cars.name(), cars.getStyle(), cars.getClasss() );
Run Code Online (Sandbox Code Playgroud)
但是我不了解的部分(很好)是:
"%-" + maxlength + "s %-5s %5s\n"
Run Code Online (Sandbox Code Playgroud)
它似乎
%-5s
Run Code Online (Sandbox Code Playgroud)
在汽车名称(cars.name())和“ Speed”(cars.getStyle())之间更改标签的宽度,而
%5s
Run Code Online (Sandbox Code Playgroud)
在代码的“速度”和“汽车的类别(cars.getClasss())部分之间更改标签的宽度。(输出如下所示:)
原始输出:

现在,如果我更改%-5S到%-15s什么的,间隔的变化在“威龙”和“速度”之间,但它也改变了“雷文顿”和它的 “速度”。
我将Veyron的名称更改为Veyronrrr,以使其更长。
int maxlength = tuna.Veyronrrr.name().length();
Run Code Online (Sandbox Code Playgroud)
这是输出:

那么我这些代码是什么,为什么它们要做他们正在做的事情?
%-5s 表示“字符串,在至少五个字符的列中左对齐”,或者,如果您愿意,“字符串,用空格右填充,直到其长度至少为五个字符”。
%5s 相同,但是右对齐而不是左对齐(即,左填充而不是右填充)。
%-15s和%15s您所期望的,是15个字符的列,而不是5个。
有关格式字符串的语法的更多信息,请参见http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax。
| 归档时间: |
|
| 查看次数: |
3261 次 |
| 最近记录: |