如何使用printf来输出Enum-Java中的值

时间:2017-05-05 18:21:20

标签: java enums printf

我尝试使用 printf 功能输出枚举的值,但似乎无法找到完成它的方法

我知道我做错了,但是我会非常感激你的帮助。

请参阅下面的代码以查看我的问题。

CarType枚举类

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);
}

3 个答案:

答案 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());