两种车往两个车站运人的java问题
来源:互联网 发布:淘宝助手客服电话 编辑:程序博客网 时间:2024/05/17 09:40
1.题目:现有两个相距X千米的车站,车站内有两种车型,Iveco和Yutong,车站内有Y个乘客想去另一个车站,Iveco每辆车可以乘坐12人,Yutong每辆可以乘坐47人
车站考虑成本,在有车的情况下,一定先发送Yutong客车,后发送Iveco客车,同时车站每半个小时发一次车,再有车的情况下,两种车都发。Iveco每小时走90千米,Yutong每小时走60千米。
问将所有人运载到对面车站需要多长事件(时间比例1:600)
思路:1.首先要抽象对象出来
车站是对象,该对象中,要有Iveco车辆的目前在站的数目,要有Yutong目前在站的数目,同时另一方如果到站了,应该将该车加入到本站中,乘客数
Iveco是一个类:有属性是载人量,速度,位置,可能还要有一个属性,是确定目前从A站到B站,还是从B站到A站。
Yutong也是一个类,和Ievco基本一致
路是一个类,场景类,车,车站,距离的计算等等,均是场景类中完成
2.创建车站类,车的类,创建车站的时候,发现需要一个List来包含所有的车,所以 需要创建两个List,而两个List的泛型应该都不一样,所以创建两个车类
Station必须要有构造方法,因为出现Station的时候,我们必须和知道这里面有多少个乘客
public class Ivecoextends Thread{
publicstatic finalint CAPCITY =12;
publicstatic finalint SPEED =90;
publicint position = 0;
publicboolean faceTo =false;
@Override
public void run() {
while(position<270){
position =position+Iveco.SPEED/6;
try {
Thread.sleep(1000);
} catch (InterruptedExceptione) {
e.printStackTrace();
}
}
}
}
public class Yutongextends Thread{
publicstatic finalint CAPCITY = 47;
publicstatic finalint SPEED = 60;
publicint position = 0;
publicboolean faceTo =false;
@Override
public void run() {
while(position<270){
position =position+Yutong.SPEED/6;
try {
Thread.sleep(1000);
} catch (InterruptedExceptione) {
e.printStackTrace();
}
}
}
}
import java.util.ArrayList;
import java.util.List;
public class Road extends Thread {
public Stationsxa;
public Stationshz;
public static List<Iveco> ivecos = new ArrayList<>();
public static List<Yutong> yutong = new ArrayList<>();
public Road() {
// 初始化西安车站的状态
List<Iveco> xaIveco =new ArrayList<>();
for (inti = 0; i < 50;i++) {
xaIveco.add(new Iveco());
}
List<Yutong> xaYutongs =new ArrayList<>();
for (inti = 0; i < 3;i++) {
xaYutongs.add(new Yutong());
}
xa = new Stations(400, xaIveco, xaYutongs);
xa.flag =true;
// 初始化汉中车站的状态
List<Iveco> hzIveco =new ArrayList<>();
for (inti = 0; i < 50;i++) {
hzIveco.add(new Iveco());
}
List<Yutong> hzYutongs =new ArrayList<>();
for (inti = 0; i < 3;i++) {
hzYutongs.add(new Yutong());
}
hz = new Stations(345, hzIveco, hzYutongs);
hz.flag =false;
}
@Override
public void run() {
xa.start();
hz.start();
while (true) {
synchronized (Stations.class) {
System.out.println("西安站目前有游客" +xa.person);
System.out.println("汉中站目前有游客" +hz.person);
// System.out.println("当前路上的大巴"+yutong.size());
// System.out.println("当前路上的依维柯"+ivecos.size());
// 遍历当前路上的所有依维柯
for (inti = 0; i < ivecos.size(); i++) {
// 如果依维柯的历程已经到270了
if (ivecos.get(i).position >= 270) {
// 判断依维柯是准备进那个站
if (ivecos.get(i).faceTo) {
// 进了西安站
Iveco iveco =ivecos.remove(i);
iveco.position = 0;
xa.ivecos.add(iveco);
} else {
// 进了汉中站
Iveco iveco =ivecos.remove(i);
iveco.position = 0;
hz.ivecos.add(iveco);
}
}
}
for (inti = 0; i < yutong.size(); i++) {
// 如果大巴的历程已经到270了
if (yutong.get(i).position >= 270) {
// 判断大巴是准备进那个站
if (yutong.get(i).faceTo) {
// 进了西安站
Yutong yuTong =yutong.remove(i);
yuTong.position = 0;
xa.yutong.add(yuTong);
} else {
// 进了汉中站
Yutong yuTong =yutong.remove(i);
yuTong.position = 0;
;
hz.yutong.add(yuTong);
}
}
}
try {
Thread.sleep(1000);
} catch (InterruptedExceptione) {
e.printStackTrace();
}
}
}
}
}
import java.util.ArrayList;
import java.util.List;
public class Stationsextends Thread{
public List<Iveco>ivecos = new ArrayList<>();
public List<Yutong>yutong = new ArrayList<>();
publicint person=0;
publicboolean flag=false;
public Stations(intperson,List<Iveco> ivecos,List<Yutong> yutong) {
this.person=person;
this.ivecos=ivecos;
this.yutong=yutong;
}
public Yutong facheYutong(booleanflag){
if(yutong.size()>0){
if(person>0){
person=person-Yutong.CAPCITY;
yutong.get(0).faceTo=flag;
return yutong.remove(0);
}
}
returnnull;
}
public Iveco facheIveco(booleanflag){
if(ivecos.size()>0){
if(person>0){
person=person-Iveco.CAPCITY;
ivecos.get(0).faceTo=flag;
return ivecos.remove(0);
}
}
returnnull;
}
@Override
public void run() {
while(true){
Yutong yt=this.facheYutong(!flag);
if(null!=yt){
Road.yutong.add(yt);
yt.run();
}
Iveco i =this.facheIveco(!flag);
if(null!=i){
Road.ivecos.add(i);
i.run();
}
try {
Thread.sleep(3000);
} catch (InterruptedExceptione) {
e.printStackTrace();
}
}
}
}
public class TestMain {
public static void main(String[] args) {
Road road =new Road();
road.start();
}
}
- 两种车往两个车站运人的java问题
- 车站调度问题
- 问题 G: 车站调度
- 关于栈型车站的问题[未解决]
- 离别的车站
- 离别的车站
- 离别的车站
- 车站
- 车站
- 告别的车站,不再回头。
- 关于Java交换两个对象的问题
- 关于Java交换两个对象的问题
- 关于Java交换两个对象的问题
- java-两个递归问题
- Python简单的小实验输出对应车站的中文简写(主要是为了解决汉字编码问题)
- 世界上最美丽的公交车站
- java中两个Integer类型的值相比较的问题
- java中两个Integer类型的值相比较的问题
- 使用My97DatePicker插件(现在基本使用前端框架自带的时间控件)
- Oracle中的SQL基础查询语句--下
- IOS TableViewStylePlain header 悬停的解决方案
- 无界队列导致内存耗尽问题一例
- NYOJ18andNYOJ613
- 两种车往两个车站运人的java问题
- UI之UITableView和UITableViewCell
- OSI七层网络模型和Linux四层概念模型
- 确定两串乱序同构
- HDU6044 Limited Permutation[快速输入][分治]
- 利用数组显示杨辉三角
- 【国家集训队2011】数颜色 (莫队)
- 矩阵转换
- CTP Python API(利用Swig 封装)Windows版(mduserapi)