我尝试使用 printf 功能输出枚举的值,但似乎无法找到完成它的方法
我知道我做错了,但是我会非常感激你的帮助。
请参阅下面的代码以查看我的问题。
public enum CarType {
Sport,
Hatchback,
Saloon,
Super
}
public void printList() {
for (Vehicle v : vehicleList) {
System.out.println("Car Type: %s%n", CarType.valueOf());
}
}
public static void main(String[] args) {
Garage g = new Garage();
g.addVehicle(CarType.Super);
}
答案 0 :(得分:0)
toString
方法适用于枚举。假设Vehicle
类有方法CarType getCarType()
,请尝试:
for (Vehicle v : vehicleList) {
System.out.println("Car Type: %s%n", v.getCarType().toString());
}
答案 1 :(得分:0)
如果您要询问如何为枚举器输出整数值,则必须为每个枚举器提供一个整数值。 Java枚举器没有像C&C的枚举器那样的默认整数值。
public enum CarType {
Sport(0),
Hatchback(1),
Saloon(2),
Super(3);
private m_ordinal;
CarType( int ordinal ) {
m_ordinal = ordinal;
}
public getOrdinalValue() { return m_ordinal; }
}
如果您要询问如何输出枚举器的名称,则可以使用name()方法执行此操作。
System.out.println( CarType.Sport.name() );
例如,使用您的代码:
for (Vehicle v : vehicleList) {
System.out.printf( "Car Type: %s%n",
v.getCarType().name());
}
但是,如果您要查找适合向用户显示的名称,最好使用toString()方法,您可以修改该方法以提供显示名称。
for (Vehicle v : vehicleList) {
System.out.printf("Car Type: %s%n",
v.getCarType().toString());
}
答案 2 :(得分:0)
你有多种选择......所有这些都需要正确实施方法 valueOf
System.out.printf("Car Type: %s", CarType.valueOf("Super").name());
System.out.printf("Car Type: %s", CarType.valueOf("Super"));
System.out.printf("Car Type: %d", CarType.valueOf("Super").ordinal());