我正在尝试将工作日的字符串值转换为数字。
我正在调查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
如何从字符串中获取相应的数字呢?
答案 0 :(得分:6)
DayOfWeek
在这里,您需要获取星期的int值。为此,您需要使用DayOfWeek.valueOf
和DayOfWeek::getValue()
。如果您的字符串输入使用DayOfWeek
枚举对象上使用的星期几的完整英文名称,则此方法有效。
System.out.println(DayOfWeek.valueOf(n).getValue());
它返回星期几,从1(星期一)到7(星期日)。
答案 1 :(得分:4)
获取星期的int值。
数值按照后面的数字编号 ISO-8601标准,从1(星期一)到7(星期日)。
在你的情况下
System.out.println(DayOfWeek.valueOf(n).getValue());
DayOfWeek
是一个不会覆盖toString
的枚举,因此默认行为是打印枚举常量的名称,即'MONDAY'。这就是你看到这种行为的原因。