题目
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+"元钱");