首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从表格中查找“日期”

从表格中查找“日期”
EN

Stack Overflow用户
提问于 2018-05-02 02:48:47
回答 1查看 23关注 0票数 0

我想创建一个“表”,它就像一个日历的所有月份和天从1-31。但是我想要做的是:如果用户选择月份和日期,它必须给你一个数字(而不是随机的),例如

代码语言:javascript
运行
复制
Days | Ene | Feb | Mar
----------------------
1   | A1 | A4  | A7
---------------------
2   | A2  | A5  | A8
---------------------
3   | A3  | A6  | A9
---------------------

如果用户写或选择Ene 1,他将得到A1或Feb 2,将得到A5 (依此类推)。这就是问题所在,我如何构建它?PHP?Javascript?Java?使用SQL/数据库?

EN

回答 1

Stack Overflow用户

发布于 2018-08-06 04:27:46

tl;dr

代码语言:javascript
运行
复制
map.get( Month.FEBRUARY ).get( 2 - 1 )

A5

Java

Month枚举

首先,您应该知道Java已经在Month枚举中为月份预定义了一组12个对象。顺便说一句,Java语言中的枚举工具比大多数语言中通常的枚举工具更强大、更灵活;您可能希望使用learn more

顺便说一句,您可以要求Month类通过getDisplayName方法自动本地化月份的名称。

List

你的数字恰好是1,2,3,所以我们可以用它们来访问List

不幸的是,对List的访问仅作为索引提供,这意味着从0开始计数(这是早期编程的不幸后遗症)。因此,我们必须从月日中减去1。例如,对于第一个,使用0,对于第二个,使用1。

Map

我们可以使用Map将每个月映射到它的值列表。

集合文字

Java9带来了方便的新Map.ofEntriesList.of方法,用于简洁地生成不可修改的集合。

代码语言:javascript
运行
复制
Map< Month, List< String > > map = 
    Map.ofEntries(
        entry( Month.JANUARY , List.of( "A1" , "A2" , "A3" ) ) ,  // This syntax requires at top:    import static java.util.Map.entry ;
        entry( Month.FEBRUARY , List.of( "A4" , "A5" , "A6" ) ) ,
        entry( Month.MARCH , List.of( "A7" , "A8" , "A9" ) )
    )
;

访问MapList

试一试。模拟用户输入的月份和日期。

代码语言:javascript
运行
复制
Month m = Month.FEBRUARY;
int dayOfMonth = 2;

或者通过数字获取月份,1-12表示1月至12月。

代码语言:javascript
运行
复制
Month m= Month.of( 2 );

访问我们的Map获取当月的List。传递一个Month对象会让我们返回放入映射中的List对象。

代码语言:javascript
运行
复制
List< String > list = map.get( m );

访问该List以获取所需的String,例如A5

代码语言:javascript
运行
复制
String result = list.get( dayOfMonth - 1 );  // Subtract one for zero-based index. 

或者,将这两行合并为一行,同时访问MapList

代码语言:javascript
运行
复制
String result = map.get( m ).get( dayOfMonth - 1 ); // One-liner, alternative.

A5

让我们一起来看看所有这些代码。

代码语言:javascript
运行
复制
Map< Month, List< String > > map = Map.ofEntries(
        entry( Month.JANUARY , List.of( "A1" , "A2" , "A3" ) ) ,  // This syntax requires at top:    import static java.util.Map.entry ;
        entry( Month.FEBRUARY , List.of( "A4" , "A5" , "A6" ) ) ,
        entry( Month.MARCH , List.of( "A7" , "A8" , "A9" ) )
);

Month m = Month.FEBRUARY;                             // Or, Month.of( 2 )
int dayOfMonth = 2;

List< String > list = map.get( m );                   // Passing a `Month` object gets us back the `List` object we had put into the map.
String result = list.get( dayOfMonth - 1 );           // Subtract one for zero-based index counting to access `List`. 

String result2 = map.get( m ).get( dayOfMonth - 1 );  // One-liner, alternative.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50122120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档