我想创建一个“表”,它就像一个日历的所有月份和天从1-31。但是我想要做的是:如果用户选择月份和日期,它必须给你一个数字(而不是随机的),例如
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/数据库?
发布于 2018-08-06 04:27:46
tl;dr
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.ofEntries
和List.of
方法,用于简洁地生成不可修改的集合。
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" ) )
)
;
访问Map
和List
试一试。模拟用户输入的月份和日期。
Month m = Month.FEBRUARY;
int dayOfMonth = 2;
或者通过数字获取月份,1-12表示1月至12月。
Month m= Month.of( 2 );
访问我们的Map
获取当月的List
。传递一个Month
对象会让我们返回放入映射中的List
对象。
List< String > list = map.get( m );
访问该List
以获取所需的String
,例如A5
。
String result = list.get( dayOfMonth - 1 ); // Subtract one for zero-based index.
或者,将这两行合并为一行,同时访问Map
和List
。
String result = map.get( m ).get( dayOfMonth - 1 ); // One-liner, alternative.
A5
让我们一起来看看所有这些代码。
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.
https://stackoverflow.com/questions/50122120
复制相似问题