我试图建立用户将进入年份的逻辑(例如2102、2001、1992等)。而返回值为
Range | Return-value
1600-1699 | 2
1700-1799 | 5
1800-1899 | 3
1900-1999 | 1
2000-2099 | 2
2100-2199 | 5
2200-2299 | 3
2300-2399 | 1
2400-2499 | 2 这个系列将继续…
示例1:假设用户输入了1900-1999年的1991,程序将输出返回值=1(从表中)。我想为这件事建立一个独立的逻辑。
例2:如果用户输入2521,在2500到2599的范围内,那么按照序列(2,5,3,1)的输出值将是"5“。
我怎样才能做到这一点?
发布于 2013-12-16 12:41:36
在c#中进行了测试,但也应该在java解决方案中使用模块化操作符(%)和泛型--它适用于任何日期。首先,它除以100,然后使用模运算符-由于您的键顺序是规则的每400年,它也将工作在其他日期,而不是1600-2500。
private int getKeyOf(int year)
{
switch (year / 100 % 4)
{
case 0:
return 2;
case 1:
return 5;
case 2:
return 3;
case 3:
return 1;
}
return -1;
}发布于 2013-12-16 12:44:36
通过将正整数除以100,您将得到两个第一位数字。然后,在Java中使用Java:
protected int getKeyOf(int year) {
switch (year / 100) {
case 16:
return 2;
case 17:
return 5;
case 18:
return 3;
case 19:
return 1;
default:
return -1;
}
}https://stackoverflow.com/questions/20611078
复制相似问题