java - 当它满足 if 语句时,如何将一个整数与另一个整数相加?
问题描述
我希望我的代码记录每月的某一天,比如每月的第一天,然后将其放入该月第一天所在的星期几的整数中。
例如。
星期三是 7 月的第一天,因此星期三是该月第一天的次数 + 1。
周一:0 周二:0 周三:1
但我不知道如何在 java 中编写代码。
解决方案
Java 提供了您需要的类Year
、YearMonth
、 和DayOfWeek
.
确定当前年份。
ZoneId z = ZoneId.of( "Africa/Tunis" );
Year year = Year.now( z );
您可以Map
跟踪哪些月份将一周中的哪一天作为一周的第一天。EnumMap
当使用枚举作为键时,我们使用它的极端效率。
Map < DayOfWeek, AtomicInteger > map = new EnumMap <>( DayOfWeek.class );
循环一年中的所有月份。Month
枚举定义了十几个对象,一年中的每个月一个。CallingMonth.values
提供了所有这些月份的数组,按时间顺序排列。
对于月份数组中的每个月,获取该YearMonth
月的 。然后获取该月的第一天,并询问结果LocalDate
该日期是星期几。
使用那个星期几,那个DayOfWeek
枚举对象,作为映射的键。查看该键是否存在条目。如果没有,请输入一个新的AtomicInteger
设置为零。再次询问该DayOfWeek
枚举对象是否作为我们映射中的键存在。我们知道第二个问题确实它必须在那里,所以不需要检查null
. 我们将其中的计数加AtomicInteger
一,以计算YearMonth
我们循环的次数。
为什么AtomicInteger
不用Integer
上课?因为AtomicInteger
可以递增,不像Integer
是不可变的。
for ( Month month : Month.values() )
{
YearMonth yearMonth = year.atMonth( month );
DayOfWeek dow = yearMonth.atDay( 1 ).getDayOfWeek();
System.out.println( "yearMonth: " + yearMonth + " = " + yearMonth.atDay( 1 ) + " = " + dow );
map.putIfAbsent( dow , new AtomicInteger( 0 ) );
map.get( dow ).incrementAndGet();
}
转储到控制台。
System.out.println( "map = " + map );
对于 2020 年,结果是:
yearMonth: 2020-01 = 2020-01-01 = WEDNESDAY
yearMonth: 2020-02 = 2020-02-01 = SATURDAY
yearMonth: 2020-03 = 2020-03-01 = SUNDAY
yearMonth: 2020-04 = 2020-04-01 = WEDNESDAY
yearMonth: 2020-05 = 2020-05-01 = FRIDAY
yearMonth: 2020-06 = 2020-06-01 = MONDAY
yearMonth: 2020-07 = 2020-07-01 = WEDNESDAY
yearMonth: 2020-08 = 2020-08-01 = SATURDAY
yearMonth: 2020-09 = 2020-09-01 = TUESDAY
yearMonth: 2020-10 = 2020-10-01 = THURSDAY
yearMonth: 2020-11 = 2020-11-01 = SUNDAY
yearMonth: 2020-12 = 2020-12-01 = TUESDAY
map = {MONDAY=1, TUESDAY=2, WEDNESDAY=3, THURSDAY=1, FRIDAY=1, SATURDAY=2, SUNDAY=2}
推荐阅读
- c# - 如何通过单击按钮运行 .exe 文件?
- docker - 如何在docker中启动后立即使用容器退出?
- python - 使用 Python 诅咒在终端中显示彩色 ascii 艺术
- ruby-on-rails - AbstractController::DoubleRenderError(在此操作中多次调用渲染和/或重定向,而不是重复
- node.js - 为什么 Clarifai 无法使用 Clarifai 门户中生成的 API 密钥或个人访问令牌验证模型输出请求?
- arrays - 无法使用 strtok() 访问地址处的内存
- python - cvlib 对象检测空列表
- mysql - 如何自然排序“XY”字符串数据,首先按X,然后按Y?
- javascript - 如何使用 Jest 模拟 optimizelySDK.createInstance().onReady()?
- python - Python 包命名空间:common test/docs/setup.py 或每个命名空间一个 - 哪种模式更好?