地铁涨价,新出台的javase计算每月乘坐地铁消费金额

public class Valuation {
public static void main(String[] args) {
Valuation valuation = new Valuation();
int metroNum = 46;     //请填乘坐地铁次数 
double metroKm = 12.9;  //请填乘坐地铁距离 
int busNum = 46;       //请填乘坐公交次数 
double busKm = 0.7;       //请填乘坐公交距离
String type = "普通卡"; //请填车卡类型(普通卡、学生卡、无卡可不填);

double total = valuation.favorable(metroNum, metroKm, busNum, busKm, type);
System.out.println("您本月乘车大约需要花费 "+Math.round(total)+" 元");
}

//优惠计算
/**
* metroNum 每月乘坐地铁次数
* metroKm  每次乘坐地铁距离
* busNum   每月乘坐公交次数
* busKm    每次乘坐公交距离
* type     车卡类型(普通卡、学生卡、无卡)
*/
public double favorable(int metroNum, double metroKm, int busNum, double busKm, String type){
int max = metroNum > busNum ? metroNum : busNum;
double total = 0;
for(int i=0; i<max; i++){
if(total<=100){
if(i<busNum){
if("普通卡".equals(type)){
total+=(busCost(busKm)*0.5);
}else if("学生卡".equals(type)){
total+=(busCost(busKm)*0.25);
}else{
total+=busCost(busKm);
}
}
if(i<metroNum){
total+=metroCost(metroKm);
}
}else if(total>100&&total<=150){
if(i<busNum){
if("普通卡".equals(type)){
total+=(busCost(busKm)*0.5*0.8);
}else if("学生卡".equals(type)){
total+=(busCost(busKm)*0.25*0.8);
}else{
total+=busCost(busKm);
}
}
if(i<metroNum){
total+=(metroCost(metroKm)*0.8);
}
}else if(total>150&&total<=400){
if(i<busNum){
if("普通卡".equals(type)){
total+=(busCost(busKm)*0.5*0.5);
}else if("学生卡".equals(type)){
total+=(busCost(busKm)*0.25*0.5);
}else{
total+=busCost(busKm);
}
}
if(i<metroNum){
total+=(metroCost(metroKm)*0.5);
}
}else{
if(i<busNum){
total+=busCost(busKm);
}
if(i<metroNum){
total+=metroCost(metroKm);
}
}
}
return total;
}


//计算每次乘坐公交的价格
public double busCost(double km){
if(km<=10){
return 2;
}else{
double large = Math.floor((km/10))*2;
double small = km%10;
if(small==0){
return large+0;
}else if(0<small && small<=5){
return large+1;
}else{
return large+2;
}
}
}


//计算每次乘坐地铁的价格
public double metroCost(double km){
if(km<=12){
if(km<=6){
return 3;
}else{
return 4;
}
}else if(12<km && km<=32){
double subjoin = (km-12)/10;
if(subjoin<=1){
return 4+1;
}else{
return 4+Math.ceil(subjoin);
}
}else{
double subjoin = (km-32)/20;
if(subjoin<=1){
return 6+1;
}else{
return 6+Math.ceil(subjoin);
}
}
}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值