我试图将工作日的字符串值转换为数字。
我正在调查Enum DayOfWeek
(https://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html),但它没有按照我预期的方式工作。
码
String n = "MONDAY";
System.out.println(n); //prints MONDAY
System.out.println(DayOfWeek.valueOf(n)); //also prints MONDAY - should print 1
如何从字符串中获取相应的数字呢?
DayOfWeek
在这里,您需要获取星期的int值。为此你需要使用DayOfWeek.valueOf
和DayOfWeek::getValue()
。如果您的字符串输入使用DayOfWeek
枚举对象上使用的星期几的完整英文名称,则此方法有效。
System.out.println(DayOfWeek.valueOf(n).getValue());
它返回星期几,从1(星期一)到7(星期日)。
看看at the JavaDoc。使用getValue
:
获取星期int值。 这些值按照ISO-8601标准编号,从1(星期一)到7(星期日)。
在你的情况下
System.out.println(DayOfWeek.valueOf(n).getValue());
DayOfWeek
是一个不会覆盖toString
的枚举,因此默认行为是打印枚举常量的名称,即'MONDAY'。这就是你看到这种行为的原因。