Java 使用扫描仪导入枚举值

Java 使用扫描仪导入枚举值,java,enums,Java,Enums,我需要导入枚举值,即天,这是我在同一个包下的单独枚举中创建的。我要问的是如何使用Scanner将枚举值导入主程序 package com.huo.kop; import java.util.Scanner; public class WeekDay { public static void main(String[] args) { Scanner sc=new Scanner (System.in); System.out.println("E

我需要导入枚举值,即天,这是我在同一个包下的单独枚举中创建的。我要问的是如何使用Scanner将枚举值导入主程序

package com.huo.kop;

import java.util.Scanner;

public class WeekDay {


    public static void main(String[] args) {

        Scanner sc=new Scanner (System.in);
        System.out.println("Enter the day(only three letters with first letter being Capital : ");
        String dayWeek=sc.next();
        if(dayWeek.equals("Sat") || dayWeek.equals("Sun"))
        {System.out.println("Yay, Its a Weekend!!!");   
        }
        else
        {System.out.println("Buah..Its still WeekDay!! Need to Work");}

您必须手动将字符串转换为枚举。例如:

public static Weekday getWeakdayForString(String s)
{
    switch (s) {
        case "monday": return Weekday.MONDAY;
        case "tuesday": return Weekday.TUESDAY;
        ...
        case "sunday": return Weekday.SUNDAY;
        default: throw new IllegalArgumentException();
    }
}
在Java 8中,有预定义的DayOfWeek enum,它还提供了获取一周中某一天的显示名称的方法,因此您可以执行以下操作:

public static DayOfWeek getDayOfWeakForString(String s)
{
    for (DayOfWeek dow : EnumSet.allOf(DayOfWeek.class)) {
        if (dow.getDisplayName(TextStyle.FULL, Locale.getDefault()).equals(s)) {
            return dow;
        }
    } 
    throw new IllegalArgumentException();
} 
从扫描仪读取数据时,您需要执行以下操作:

DayOfWeek dow = getDayOfWeekForString(sc.next());

请修复格式,为枚举添加代码,并定义导入枚举值的含义。字符串的使用与枚举有什么关系?是否有帮助?