已知 地铁站编号和站名对应关系如下: 1=西流湖 2=西三环 3=秦岭路 4=桐柏路 5=碧沙岗 6=绿城广场 7=医学院 8=火车站 9=二七广场 10=人民路 11=新郑机场站 请完成以下需求: 1将以上对应关系的数据存储到map集合中key:表示站编号value:表示站名 并遍历打印map集合 2因线路调整将编号为11的车站从map中移除 3将所有的编号取出放到一个单列集合
import java.util.*;
public class SubwayDemo {
public static void main(String[] args) {
// 1.将对应关系存储到map中
Map<Integer, String> stationMap = new HashMap<>();
stationMap.put(1, "西流湖");
stationMap.put(2, "西三环");
stationMap.put(3, "秦岭路");
stationMap.put(4, "桐柏路");
stationMap.put(5, "碧沙岗");
stationMap.put(6, "绿城广场");
stationMap.put(7, "医学院");
stationMap.put(8, "火车站");
stationMap.put(9, "二七广场");
stationMap.put(10, "人民路");
stationMap.put(11, "新郑机场站");
// 遍历打印map集合
for (Map.Entry<Integer, String> entry : stationMap.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
// 2.移除编号为11的车站
stationMap.remove(11);
// 3.将所有编号取出放到一个单列集合noList中,遍历打印noList集合中的数据
List<Integer> noList = new ArrayList<>(stationMap.keySet());
for (Integer no : noList) {
System.out.print(no + " ");
}
System.out.println();
// 4.从noList中随机取一个编号,拿到对应的车站名打印到控制台
int randomNo = noList.get(new Random().nextInt(noList.size()));
String stationName = stationMap.get(randomNo);
System.out.println(randomNo + "=" + stationName);
// 5.计算地铁票价规则
Scanner scanner = new Scanner(System.in);
int startNo, endNo;
String startName, endName;
// 输入上车站
while (true) {
System.out.println("请输入上车站:");
startName = scanner.nextLine();
startNo = getKeyByValue(stationMap, startName);
if (startNo != -1) {
break;
} else {
System.out.println("您输入的上车站:" + startName + "不存在,请重新输入上车站:");
}
}
// 输入到达站
while (true) {
System.out.println("请输入到达站:");
endName = scanner.nextLine();
endNo = getKeyByValue(stationMap, endName);
if (endNo != -1) {
break;
} else {
System.out.println("您输入的到达站:" + endName + "不存在,请重新输入到达站:");
}
}
// 计算票价和耗时
int distance = Math.abs(endNo - startNo);
int cost;
if (distance <= 3) {
cost = 3;
} else if (distance <= 5) {
cost = 4;
} else {
cost = 4 + 2 * (distance - 5);
cost = cost > 10 ? 10 : cost; // 封顶10元
}
int time = distance * 2;
// 输出结果
System.out.println("从" + startName + "到" + endName + "经过" + distance + "站收费" + cost + "元,大约需要 " + time + "分钟");
}
/**
* 通过value获取map的key
*/
public static int getKeyByValue(Map<Integer, String> map, String value) {
for (Map.Entry<Integer, String> entry : map.entrySet()) {
if (entry.getValue().equals(value)) {
return entry.getKey();
}
}
return -1;
}
}
``
原文地址: https://www.cveoy.top/t/topic/ffn6 著作权归作者所有。请勿转载和采集!