Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用int输入获取枚举常量作为输出_Java_Enums - Fatal编程技术网

Java 使用int输入获取枚举常量作为输出

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{

我需要编写一个代码来输出星期几,这是枚举中的一个常量。输入是一个整数,该方法将int转换为常量。例如,当输入为0时,我应该将星期天作为输出,如果数字大于6,那么我必须使用%从8到星期二。如何从枚举输出特定常量

最后几行是不正确的,我不知道如何实现这个想法

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方法!