东北大学-软件学院-大二数据结构-停车场模拟

2024-04-08 11:08

本文主要是介绍东北大学-软件学院-大二数据结构-停车场模拟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Stack;/*** @author csk*/
public class ParkingLot {class Car {/*** licence:牌照,如:'TUE-87B'* moveTimes:移动次数*/String licence;int moveTimes;Car(String licence) {this.licence = licence;this.moveTimes = 0;}String getLicence() {return licence;}int getMoveTimes() {return moveTimes;}void moveCar() {moveTimes++;}}public static void main(String[] args) throws IOException {new ParkingLot().parkingLotSimulation();}void parkingLotSimulation() throws IOException {BufferedReader br = new BufferedReader(new FileReader("data.txt"));StringBuilder sb = new StringBuilder();String s;//stack1模拟停车场Stack<Car> stack1 = new Stack<>();//最大停车位数 (从data.txt可以得知为5,数出来的)int maxNumber = 5;int count = 0;while ((s = br.readLine()) != null) {String[] array = s.split(" ");//车辆停入功能的实现if ("arrives".equals(array[1])) {count++;//最大停车数为5,超过则拒绝停入if (count > maxNumber) {System.out.println("Sorry " + array[0] + ", the lot is full");count--;continue;}Car newCar = new Car(array[0]);//车停入stack1.push(newCar);}//车辆开出功能的实现//Stack2用来存放暂时挪出停车场的车辆Stack<Car> stack2 = new Stack<>();//若栈顶的车辆不是要出去的车辆,则将出去车辆前的所有车辆移出并存入stack2if ("departs".equals(array[1])) {try {while (!stack1.peek().getLicence().equals(array[0])) {stack1.peek().moveCar();stack2.push(stack1.peek());stack1.pop();}if (stack1.peek().getLicence().equals(array[0])) {System.out.println(stack1.peek().getLicence() + " was moved " + stack1.peek().getMoveTimes() + " times while it was here");stack1.pop();count--;while (!stack2.empty()) {//待要出去的车辆移出后,还要将stack2暂存的车辆再重新移入停车场(即stack1)stack1.push(stack2.peek());stack2.pop();}}}catch (Exception e){System.out.println("Illegal input file!");};}}//停车场剩余车辆未出车辆,输入移动次数while (!stack1.empty()) {System.out.println(stack1.peek().getLicence() + " was moved "+ stack1.peek().getMoveTimes() + " times while it was here");stack1.pop();}br.close();}
}

使用了java

这篇关于东北大学-软件学院-大二数据结构-停车场模拟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885417

相关文章

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象