Java 使用int输入获取枚举常量作为输出
我需要编写一个代码来输出星期几,这是枚举中的一个常量。输入是一个整数,该方法将int转换为常量。例如,当输入为0时,我应该将星期天作为输出,如果数字大于6,那么我必须使用%从8到星期二。如何从枚举输出特定常量 最后几行是不正确的,我不知道如何实现这个想法Java 使用int输入获取枚举常量作为输出,java,enums,Java,Enums,我需要编写一个代码来输出星期几,这是枚举中的一个常量。输入是一个整数,该方法将int转换为常量。例如,当输入为0时,我应该将星期天作为输出,如果数字大于6,那么我必须使用%从8到星期二。如何从枚举输出特定常量 最后几行是不正确的,我不知道如何实现这个想法 import java.util.scanner; public class CalendarUtil{ public static void main(String[] args){ enum Months{
import java.util.scanner;
public class CalendarUtil{
public static void main(String[] args){
enum Months{
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER;
}
enum Weekdays{
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
Scanner s= new Scanner();
int day = s.nextInt();
System.out.println(getNthWeekday(int day));
}
public static String getNthWeekday(int day){
if (day≥0)%6 {
return enum
}
}
}
你可以试试这个
import java.util.Scanner;
class CalendarUtil{
enum Months{
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER;
}
enum Weekdays{
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public static void main(String[] args){
Scanner s= new Scanner(System.in);
int day = s.nextInt();
System.out.println(getNthWeekday(day));
}
public static String getNthWeekday(int day){
return Weekdays.values()[day%7].name();
}
}
您也可以这样做:
private static String getNthWeekday(int day) {
Weekdays[] days = Weekdays.values();
if (day >= days.length) {
return days[day - days.length].name();
} else {
return days[day].name();
}
}
Java的枚举为枚举的每个成员提供
ordinal()
方法和values()
,这将允许您获取所有成员。以下是建议的解决方案:
public static Weekdays getNthWeekday(int day) {
for (Weekdays d : Weekdays.values()) {
if (d.ordinal() == day) {
return d;
}
}
throw new IllegalArgumentException("Unknown day: " + day);
}
java提供了几个月和工作日的enmus。为什么不用呢?因为第0天是星期天,第8天不能是星期二,必须是星期一。程序没有编译,它给了我这些错误:CalendarUtil.java:7:error:enum类型不能是本地enum月{^CalendarUtil.java:10:error:enum类型不能是本地enum工作日{^CalendarUtil.java:17:error:'.class'应为System.out.println(getNthWeekday(int day));^CalendarUtil.java:17:error:';'应为System.out.println(getNthWeekday(int day)); ^ 4 errors@AnnS.由于
平日
不是全局的,因此此函数不知道它。全局声明它。谢谢,它终于可以编译了!所以基本上我必须在类中声明它,然后再声明main方法!