使用扫描仪导入枚举值

时间:2014-11-20 06:53:26

标签: 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("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");}

1 个答案:

答案 0 :(得分:0)

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

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枚举,它还提供了获取星期几的显示名称的方法,因此您可以这样做:

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());