我想创建一个“表格”,就像一个日历,所有月份和日期都是1-31。但我想要做的是:如果用户选择一个月和一天它必须给你一个数字(不是随机的)例如
Days | Ene | Feb | Mar
----------------------
1 | A1 | A4 | A7
---------------------
2 | A2 | A5 | A8
---------------------
3 | A3 | A6 | A9
---------------------
如果用户编写或选择Ene 1,他将获得A1或2月2日,将获得A5(依此类推)。这就是问题,我该如何构建呢? PHP? JavaScript的? Java的?使用SQL / DataBases?
答案 0 :(得分:0)
map.get( Month.FEBRUARY ).get( 2 - 1 )
A5
Month
枚举首先,您应该知道Java在Month
枚举中为月预定义了一组12个对象。顺便说一下,Java中的枚举功能比大多数语言中的通用功能强大和灵活得多。您可能想learn more。
顺便说一句,您可以要求Month
类通过getDisplayName
方法自动本地化月份名称。
List
您的数字恰好是1、2、3,因此我们可以使用它们来访问List
。
不幸的是,对List
的访问仅作为索引提供,这意味着从0开始的计数(不幸的是,从编程的早期开始就存在宿醉)。因此,我们必须从月份中减去一个。例如,对于第一个,使用0,对于第二个,使用1。
Map
我们可以使用Map
将每个月映射到其值列表。
Java 9带来了方便的新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.