根据java中的扫描仪输入将枚举值赋给字符串

时间:2017-02-25 21:34:11

标签: java string enums int

好吧,我对java和编码整体都很陌生,我有这个任务,我必须接受用户输入,这将是一个月,一天和一年,并将月份乘以一天并将其与今年的最后两位数字来检查它是一个神奇的日子还是不是。虽然我完成了这个,如果用户只使用数字作为输入,我想尝试做另一个程序,用户输入月(例如,四月(不是4)),我想看看是否有可能让程序检查枚举,检查四月及其值,并将其值分配给String月,然后我将转换为int。对不起,如果我的解释很混乱,但我尽我所能解释,并随时问你是否对某些事感到困惑。

到目前为止,这是我的代码:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package magicadvanced;
import java.util.Scanner;
/**
 *
 * @author yfernandez
 */
public class MagicAdvanced {
    public enum Months{
        January(1),February(2),March(3),April(4),May(5),June(6),July(7),August(8),September(9),October(10),November(11),December(12);

        private int value;

        Months(int value){
            this.value = value;
        }


        public int valueInt(){
            return value;
        }
    }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner ls=new Scanner(System.in);
        String month,year,yrTwo;
        int day,yearInt;
        System.out.println("Please enter a month.");
        month = ls.next();
        System.out.println("Please enter a day.");
        day = ls.nextInt();
        System.out.println("Please enter the year.");
        year = ls.next();
        yrTwo = year.substring(2,4); //getting last two characters of the string year
        yearInt = Integer.valueOf(yrTwo);// converting last two character of the string year into an integer
        System.out.println(yearInt*2);//this is a just a test code to check if my conversion to integer works, will remove when program is done

    }
}

2 个答案:

答案 0 :(得分:0)

我的建议是几乎从不尝试为时间单位创建自定义枚举。 Java API已经提供了处理日期所需的所有工具。 ESP。 Java 8,带来了显着的改进。您应该查看thisthis等资源,以获取有关Java datetime API主要功能的见解。

以下代码段让您了解如何处理月份。

Month month = Month.valueOf("FEBRUARY");

System.out.println(month.getValue());
// output: 2
System.out.println(month.getDisplayName(TextStyle.FULL, Locale.UK));
// output: February

如果您要解析表示日期的字符串,您应该使用DateTimeFormatter,例如显示here

答案 1 :(得分:0)

是的,你需要解析字符串输入并将其转换为月常量的枚举值

Months x = Months.valueOf("JAnuary")

将从初始化x到1月......

然后获得的值与您的相同:

int val = x.getValue()

之后,您可以使用int完成所需的一切。