Advertisement
Guest User

Untitled

a guest
Nov 27th, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.34 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.concurrent.TimeUnit;
  3.  
  4. class Zentrale
  5. {
  6. ArrayList<District> dliste = new ArrayList<District>();
  7. ArrayList<Fahrer> fliste = new ArrayList<Fahrer>();
  8.  
  9. Zentrale(){}
  10. public void addDistrict(District d)
  11. {
  12. dliste.add(d);
  13. }
  14. public void addFahrer(Fahrer f)
  15. {
  16. fliste.add(f);
  17. }
  18. public boolean checkDistrict(String name)
  19. {
  20. for (District d: dliste)
  21. {
  22. if (d.dname.equals(name)) return true;
  23. }
  24. return false;
  25. }
  26. public District getDistrictByName(String name)
  27. {
  28. District r = new District("error");
  29. for (District d: dliste)
  30. {
  31. if (d.dname.equals(name))
  32. {
  33. r = d;
  34. break;
  35. }
  36. }
  37. return r;
  38. }
  39. public void printDliste()
  40. {
  41. for (District d: dliste)
  42. {
  43. System.out.println("-" + d.getDname());
  44. for (Fahrer bote: d.vorhandeneBoten)
  45. {
  46. long[] warten = bote.getWarten(d.u.getSekunden(), d.u.getMinuten());
  47. System.out.println(" |-" + bote.getName() +
  48. "\t - wartet seit " + warten[1] + "min : " + warten[0] + "sek");
  49. }
  50. }
  51. }
  52. public void closeAllDistricts()
  53. {
  54. for (District d: dliste)
  55. {
  56. d.u.stopUhr();
  57. }
  58. }
  59. }
  60.  
  61. public class District
  62. {
  63. Uhr u = new Uhr();
  64. String dname;
  65. Deque<Fahrer> vorhandeneBoten = new LinkedList<Fahrer>();
  66.  
  67. District (String name)
  68. {
  69. this.dname = name;
  70. u.start();
  71. }
  72.  
  73. public String getDname(){return dname;}
  74. public void arrive(Fahrer f)
  75. {
  76. boolean eingetroffen = vorhandeneBoten.offerLast(f);
  77. if (eingetroffen)
  78. {
  79. String zeit = "Um " + u.getMinuten() + " Minuten und " + u.getSekunden() + " Sekunden ist ";
  80. System.out.println(zeit + f.getName() + " in " + dname + " eingetroffen");
  81. f.setWarten(u.getSekunden(), u.getMinuten());
  82. }
  83. }
  84. public void help(Fahrer f)
  85. {
  86. boolean eingetroffen = vorhandeneBoten.offerFirst(f);
  87. if (eingetroffen)
  88. {
  89. String zeit = "Um " + u.getMinuten() + " Minuten und " + u.getSekunden() + " Sekunden ist ";
  90. System.out.println(zeit + f.getName() + " in " + dname + " eingetroffen - durch Auslastung -");
  91. f.setWarten(u.getSekunden(), u.getMinuten());
  92. }
  93. }
  94. public boolean job(District d)
  95. {
  96. if (vorhandeneBoten.size() == 0)
  97. {
  98. String zeit = "Um " + u.getMinuten() + " Minuten und " + u.getSekunden() + " Sekunden, Auftrag ohne Fahrer in ";
  99. System.out.println(zeit + dname);
  100. return false;
  101. }
  102. else
  103. {
  104. Fahrer f = vorhandeneBoten.poll();
  105. String zeit = "Um " + u.getMinuten() + " Minuten und " + u.getSekunden() + " Sekunden, fährt ";
  106. System.out.println(zeit + f.getName() + " von " + dname + " nach " + d.getDname());
  107. d.arrive(f);
  108. }
  109. return true;
  110. }
  111. public void auslasten(District d)
  112. {
  113. if (vorhandeneBoten.size() > 0)
  114. {
  115. Fahrer f = vorhandeneBoten.poll();
  116. String zeit = "Um " + u.getMinuten() + " Minuten und " + u.getSekunden() + " Sekunden, fährt ";
  117. System.out.println(zeit + f.getName() + " von " + dname + " nach " + d.getDname());
  118. d.help(f);
  119. }
  120. }
  121.  
  122.  
  123. public static void main(String[] args)
  124. {
  125. Scanner einlesen = new Scanner(System.in);
  126. String eingabe;
  127. boolean keepGoing = true;
  128.  
  129. Fahrer fritz = new Fahrer("fritz");
  130. Fahrer sabiene = new Fahrer("sabiene");
  131. Fahrer kurt = new Fahrer("kurt");
  132. Fahrer horst = new Fahrer("horst");
  133.  
  134. District italien = new District("italien");
  135. District deutschland = new District("deutschland");
  136. District osterreich = new District("osterreich");
  137.  
  138. Zentrale tower = new Zentrale();
  139.  
  140. tower.addDistrict(italien);
  141. tower.addDistrict(deutschland);
  142. tower.addDistrict(osterreich);
  143.  
  144. tower.addFahrer(fritz);
  145. tower.addFahrer(sabiene);
  146. tower.addFahrer(kurt);
  147. tower.addFahrer(horst);
  148.  
  149. italien.arrive(fritz);
  150. italien.arrive(sabiene);
  151. italien.arrive(kurt);
  152. deutschland.arrive(horst);
  153.  
  154. tower.printDliste();
  155.  
  156. while (keepGoing)
  157. {
  158. System.out.println("\n\n print | job | auslasten | ende");
  159. eingabe = einlesen.next();
  160. if (eingabe.equals("print"))
  161. {
  162. tower.printDliste();
  163. }
  164. else if(eingabe.equals("job"))
  165. {
  166. System.out.println("- Quelle Distrikt");
  167. eingabe = einlesen.next();
  168. if (tower.checkDistrict(eingabe))
  169. {
  170. District origin = tower.getDistrictByName(eingabe);
  171. System.out.println("- Ziel Distrikt");
  172. eingabe = einlesen.next();
  173. if (tower.checkDistrict(eingabe))
  174. {
  175. District destination = tower.getDistrictByName(eingabe);
  176. origin.job(destination);
  177. }
  178. }
  179. }
  180. else if(eingabe.equals("auslasten"))
  181. {
  182. System.out.println("- Quelle Distrikt");
  183. eingabe = einlesen.next();
  184. if (tower.checkDistrict(eingabe))
  185. {
  186. District origin = tower.getDistrictByName(eingabe);
  187. System.out.println("- Ziel Distrikt");
  188. eingabe = einlesen.next();
  189. if (tower.checkDistrict(eingabe))
  190. {
  191. District destination = tower.getDistrictByName(eingabe);
  192. origin.auslasten(destination);
  193. }
  194. }
  195. }
  196. else if (eingabe.equals("ende"))
  197. {
  198. tower.closeAllDistricts();
  199. keepGoing = false;
  200. }
  201. }
  202. }
  203. }
  204.  
  205. class Fahrer
  206. {
  207. private String name;
  208. private long wartenSekunden = 0;
  209. private long wartenMinuten = 0;
  210.  
  211. Fahrer(String name)
  212. {
  213. this.name = name;
  214. }
  215. public String getName(){return name;}
  216. public void setWarten(long sekunden, long minuten)
  217. {
  218. wartenSekunden = sekunden;
  219. wartenMinuten = minuten;
  220. }
  221. public long[] getWarten(long sekundenOffset, long minutenOffset)
  222. {
  223. long sek = sekundenOffset - wartenSekunden;
  224. long min = minutenOffset - wartenMinuten;
  225. long[] warten = {sek, min};
  226. return (warten);
  227. }
  228. }
  229.  
  230. class Uhr extends Thread
  231. {
  232. boolean go = true;
  233. long sekunden = 0;
  234. long minuten = 0;
  235.  
  236. Uhr(){}
  237.  
  238. public void stopUhr() { go = false; }
  239. public long getSekunden() { return sekunden; }
  240. public long getMinuten() { return minuten; }
  241.  
  242. public void run()
  243. {
  244. while (go)
  245. {
  246. sekunden++;
  247. if (sekunden % 60 == 0) minuten++;
  248. try
  249. {
  250. TimeUnit.SECONDS.sleep(1);
  251. }
  252. catch (InterruptedException e)
  253. {
  254. e.printStackTrace();
  255. }
  256. }
  257. }
  258. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement