HashMap和Set接口解决地铁收费问题

题目

1.站编号和站名对应关系如下:1=新街口2=苜蓿园 3=仙鹤门 4=马群 5=钟灵街6=学则路7=孝陵卫8=下马坊9=苜蓿园10=西安门11=大行宫12=云锦路将以上对应关系的数据存储到map集合中。
2.计算地铁票价规则:总行程 3站内(包含3站)收费3元;3站以上不超过5站收费4元; 5站以上的,在4元的基础上,每多1站增加2元,十元封顶;
3.打印格式(需要对键盘录入的上车站和到达站进行判断,如果没有该站,提示重新输入);

例:
注意:每站需要2分钟
请输入上车站:新街口(流沙河不存在,请重新输入上车站:)
请输入到达站:仙鹤门(西三郎不存在,请重新输入到达站:)
从新街口到苜蓿园共经过3站,大约需要6分钟,花费了6元 ···``

HashMap<Integer,String> map=new HashMap<Integer, String>();
map.put(1,"元通");
map.put(2,"奥体东");
map.put(3,"兴隆大街");
map.put(4,"集庆门大街");
map.put(5,"云锦路");
map.put(6,"莫愁湖");
map.put(7,"汉中门");
map.put(8,"上海路");
map.put(9,"新街口");
map.put(10,"大行宫");
map.put(11,"西安门");
map.put(12,"明故宫");
String getOn=null;//上车站
String getOff=null;//下车站
Scanner input=new Scanner(System.in);
System.out.println("请输入上车站");
do{
 getOn=input.next();
 if(!map.containsValue(getOn)){
  System.out.println(getOn+"站不存在,请重新输入上车站:");
  continue;
 }else{
  break;
 }
}while(true);
System.out.println("请输入下车站");
do{
 getOff=input.next();
 if(!map.containsValue(getOff)){
  System.out.println(getOff+"站不存在,请重新输入上车站:");
  continue;
 }else{
  break;
 }
}while(true);
//获取上下站台对应的编号
Integer getOnNo=null;
Integer getOffNo=null;
Set<Entry<Integer,String>> set=map.entrySet();
for (Entry<Integer, String> e : set) {
 if(e.getValue().equals(getOn)){
  getOnNo=e.getKey();
 }
 if(e.getValue().equals(getOff)){
  getOffNo=e.getKey();
 }
}
//计算
int staNo=Math.abs(getOnNo-getOffNo);
int minutes=staNo*2;
double price=0;
switch(staNo){
case 1:case 2:case 3:
 price=3;
 break;
case 4:case 5: 
 price=4;
 break;
case 6:case 7:case 8:
 price=4+(staNo-5)*2;
 break;
case 9:case 10:case 11:case 12: 
 price=10;
 break;
}
System.out.println("从"+getOn+"到"+getOff+"共经过"+staNo+
  "站," +"大约需要"+minutes+"分钟,共花费了"+price+"元钱");
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值