Col*_*ole 0 java enums enumeration
我正在编写Java课程,该部分是关于Enumerations的.我的枚举中有这个:
public enum tuna {
Camaro("Orange", "1968"),
Silverado("Red","1996"),
Sierra("Black","2007"),
Equinox("Silver","2011");
private final String color;
private final String year;
tuna(String carColor, String age){
color = carColor;
year = age;
}
public String getColor(){
return color;
}
public String getYear(){
return year;
}
}
Run Code Online (Sandbox Code Playgroud)
这在我的Java类中打印出来:
for(tuna cars: tuna.values()){
System.out.printf("%s\t\t%s\t\t%s\n", cars, cars.getColor(), cars.getYear()
Run Code Online (Sandbox Code Playgroud)
打印出来:
看看西尔维拉多的"红色"和"1996"是如何在右边过去的(因为"西尔维拉多"比其他词更长)?那我怎么能解决这个问题,所以长词的细节与其他词的间隔相等?
PS如果我将"Silverado"缩短为"Silver",这是正常的:
我建议不使用制表符而不是字符串格式,即System.out.format(...)
通过获取最长名称的长度来使用和计算每个格式说明符的长度.然后动态构建格式字符串.
例:
//that's a shortcut, you'd have to calculate the max
int maxlength = tuna.Silverado.name().length();
for( tuna t : tuna.values() ) {
System.out.format( "%-" + maxlength + "s %-10s %4s\n", t.name(), t.getColor(), t.getYear() );
}
Run Code Online (Sandbox Code Playgroud)
输出:
Camaro Orange 1968
Silverado Red 1996
Sierra Black 2007
Equinox Silver 2011
Run Code Online (Sandbox Code Playgroud)