算法 计价里程按里程区间阶梯状计价

/*算法:中国铁路规定,计价里程按里程区间阶梯状计价。
* 1-200公里分20区段每区段10公里,
* 201-400公里分10区段每区段20公里,
* 401-700公里分10区段每区段30公里,
* 701-1100公里分10区段每区段40公里,
* 1101-1600公里分10区段每区段50公里,
* 1601-2200公里分10区段每区段60公里,
* 2201-2900公里分10区段每区段70公里,
* 2901-3700公里分10区段每区段80公里,
* 3701-4600公里分10区段每区段90公里,
* 4600公里以上每区段100公里。
* 计价里程按各段所在区段计算,然后求和。

* 递远递减:
* 1-200公里区间,递减率0%。
* 201-500公里区间,递减率10%。
* 501-1000公里区间,递减率20%。
* 1001-1500公里区间,递减率30%。
* 1501-2500公里区间,递减率40%。
* 2500公里以上区间,递减率50%。

* 将计价里程各段按所在递远递减区段优惠率计算后,各段求和得优惠後里程,
* 即为产生费用的里程,用于下一步票价计算。
* */
private static int getFavourableTollDistance(int km) {

// 判断里程区间
if (km > 0) {
if (km > 200) {
if (km > 400) {
if (km > 700) {
if (km > 1100) {
if (km > 1600) {
if (km > 2200) {
if (km > 2900) {
if (km > 3700) {
if (km > 4600) {
km = ((km - 4600) / 100 + 1) * 100 + 4600;
} else {
km = ((km - 3700) / 90 + 1) * 90 + 3700;
}
} else {
km = ((km - 2900) / 80 + 1) * 80 + 2900;
}
} else {
km = ((km - 2200) / 70 + 1) * 70 + 2200;
}
} else {
km = ((km - 1600) / 60 + 1) * 60 + 1600;
}
} else {
km = ((km - 1100) / 50 + 1) * 50 + 1100;
}
} else {
km = ((km - 700) / 40 + 1) * 40 + 700;
}
} else {
km = ((km - 400) / 30 + 1) * 30 + 400;
}
} else {
km = ((km - 200) / 20 + 1) * 20 + 200;
}
} else {
km = (km / 10 + 1) * 10;
}
} else {
km = 0;
}
// 递远递减优惠
if (km > 2500) {
km = (int) ((km - 2500) * 0.5 + 1000 * 0.6 + 500 * 0.7 + 500 * 0.8
+ 300 * 0.9 + 200 * 1);
} else {
if (km > 1500) {
km = (int) ((km - 1500) * 0.6 + 500 * 0.7 + 500 * 0.8 + 300
* 0.9 + 200 * 1);
} else {
if (km > 1000) {
km = (int) ((km - 1000) * 0.7 + 500 * 0.8 + 300 * 0.9 + 200 * 1);
} else {
if (km > 500) {
km = (int) ((km - 500) * 0.8 + 300 * 0.9 + 200 * 1);
} else {
if (km > 200) {
km = (int) ((km - 200) * 0.9 + 200 * 1);
} else {
if (km > 0) {

} else {
km = 0;
}
}
}
}
}
}

return km;
}

你可能感兴趣的:(算法)