(今天也是前几天的 今天补上)
package com.dzqc.Day0107;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
/**
* Created with IntelliJ IDEA.
*
* @Author: zhangxiaokun
* @Date: 2022/01/07/10:49
* @Description:Java基础-集合:综合
郑州一号线站编号和站名对应关系如下:
1=河南工业大学站
2=郑大科技园站
3=郑州大学站
4=梧桐街站
5=兰寨站
6=...
将以上对应关系的数据存储到map集合中,key:表示站编号,value:表示站名,并遍历打印(可以不按顺序打印):
第10站: 秦岭路站
第6站: 铁炉站
第12站: 碧沙岗站
第13站: 绿城广场站
2.计算地铁票价规则:
总行程 :3站以内,共收 2 元
3站 到 10站 , 每站加收0.5元
10站以上,每两站加收0.5元,
封顶10元。
3.打印格式(需要对键盘录入的上车站和到达站进行判断,如果没有该站,提示重新输入,直到站名存在为止):
注意:每站需要2分钟
请输入上车站:
西二旗
您输入的上车站:西二旗不存在,请重新输入上车站:
体育西路
您输入的上车站:体育西路不存在,请重新输入上车站:
郑州火车站
请输入到达站:
西二旗
您输入的到达站:西二旗不存在,请重新输入到达站:
体育西路
您输入的到达站:体育西路不存在,请重新输入到达站:
郑州东站
从郑州火车站到郑州东站共经过10站收费5.5元,大约需要 20分钟
*/
public class Zuoye {
public static void main(String[] args) {
HashMap<Integer, String> hm = new HashMap<>();
hm.put(1, "河南工业大学");
hm.put(2, "郑大科技园站");
hm.put(3, "郑州大学站");
hm.put(4, "梧桐街站");
hm.put(5, "兰寨站");
hm.put(6, "铁炉站");
hm.put(7, "郑州火车站");
hm.put(8, "第八站");
hm.put(9, "第九站");
hm.put(10, "秦岭路站");
hm.put(11, "第十一站");
hm.put(12, "碧沙岗站");
hm.put(13, "绿城广场站");
hm.put(14, "第十四站");
hm.put(15, "第十五站");
hm.put(16, "第十六站");
hm.put(17, "郑州东站");
//遍历车站
Set<Integer> sOut = hm.keySet();
for (Integer i : sOut) {
System.out.println(i + "--" + hm.get(i));
}
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String sStart;
String sEnd;
// 获取上车站
while (true) {
System.out.println("请输入上车站:");
sStart = sc.nextLine();
if (hm.containsValue(sStart)) {
break;
} else {
System.out.println("站点不存在,请重新输入");
}
}
// 获取下车站
while (true) {
System.out.println("请输入到达站");
sEnd = sc.nextLine();
if (hm.containsValue(sEnd)) {
break;
} else {
System.out.println("站点不存在,请重新输入");
}
}
// 获取站点编号及间隔差
int iStart = 0;
int iEnd = 0;
int iSub;
Set<Integer> sKey = hm.keySet();
for (Integer i : sKey) {
if (sStart.equals(hm.get(i))) {
iStart = i;
}
if (sEnd.equals(hm.get(i))) {
iEnd = i;
}
}
if (iStart > iEnd) {
iSub = iStart - iEnd;
} else {
iSub = iEnd - iStart;
}
// 计算金额
int price;
if (iSub <= 3) {
price = 2;
} else if (iSub <= 10) {
price = (int) (iSub * 0.5);
} else {
price = (int) (iSub - 5 * 0.5);
}
// 10元封顶
price = price > 10 ? 10 : price;
// 计算时间
int time = iSub * 2;
System.out.println("从[" + sStart + "]到[" + sEnd + "]共经过" + iSub + "站,收费" + price + "元,大约需要" + time + "分钟");
}
}