背景描述在最后。
简而言之,为什么下面的 foror 循环对 yearInt 0-8 有效,但是当 yearInt 变量为 9 时,循环变得无穷无尽?
int yearInt = 9;//scanned year - for testing
int currentYearFourNumbers = Calendar.getInstance().get(Calendar.YEAR); // current year
currentYearFourNumbers = 2023; // for testing!!
int currentYearLastDigit=currentYearFourNumbers%10; //mod operator for getting last digit of current year
int resultYear = currentYearFourNumbers; //init int result which will represent the identified year
int checkNumber = currentYearLastDigit; //counter or check number for for loop
for (int i = yearInt; i != checkNumber; checkNumber--){
checkNumber = resultYear%10;
System.out.println (checkNumber);
System.out.println (i);
resultYear = resultYear -1;
System.out.println (resultYear);
}
如果我有 8 它可以工作,请参阅输出:
检查:3 针对8 2022 检查:2 针对8 2021 检查:1 针对8 2020 检查:0 针对8 2019 检查:9 针对8 2018 制造日期2018
背景:
我需要创建逻辑来确定应根据一位数将哪一年输入数据库。该数字是设备扫描序列号的一部分,代表制造年份。
数字 4 现在应该代表 2004 年,但明年应该代表 2014 年。逻辑应该在 2020 年也有效,所以我需要一个“永久”解决方案。
为此,我创建了一个 foo 循环,该循环获取扫描的数字并将其与当前年份的最后一位数字进行比较。然后我减去(设备不能有未来日期)一年,直到一年的最后一位数字与扫描的年份相同。