所以..我已经盯着这个编程工作几个小时了,我已经完成了所有的讲义,练习和谷歌如何做到这一点,但我仍然可以'吨。我甚至不会抱歉在这里粘贴我的整个作业。 :D基本上,我需要在parkingLots中添加和删除Lots。
例如,“ADD 5 3”表示从批次5开始将3批次添加到占用批次列表中。因此,如果请求成功,将向3辆车的入境车队提供5,6,7号。 同样,如果请求成功,“REMOVE 10 2”意味着当2辆车离开停车场时,释放2个占用的10和11号地段。
如果任何请求的批次已被占用,则ADD请求不会成功。在这种情况下,所请求的批次都不会被添加到占用批次列表中。
如果任何请求的批次空缺,则REMOVE请求不会成功。在这种情况下,不会从占用批次列表中删除任何批次。
开始+大小不超过1000;如果是,则该请求被视为无效,不会采取任何措施。
列表中的节点按起始值的升序维护。
我的思维过程就是这样 在读取起始批次和批量大小后,检查它是否与之前的批次或下一批次冲突。如果确实如此,那么就什么都不做。如果它没有,那么添加。 Ť
toString()方法中的迭代器将覆盖打印第一批大小的打印问题,然后是下一批等等。
我在添加和删除方面遇到了很大的问题,因为LinkedList只占用了位置,但它没有占用大小。例如,如果开头是12并且批次是2,那么从技术上讲它应该占用12和13但是代码是这样的,它在12处添加Lot对象并且在LinkedList中的位置13是空的。如果我想检查LinkedList上的Lot是否被占用,这将给我带来问题,只有一个位置被占用。
public class ParkingManager {
12
13 private static final int LAST_LOT = 1000;
14 private LinkedList <Lots> parkingLots;
15
16 public ParkingManager() {
17 parkingLots = new LinkedList<Lots>();
18 }
19
20 public void addLots(int start, int size) {
21
22
23 }
24
25 public void removeLots(int start, int size) {
26
27 }
28
29 // Returns the string representation of the linked list
30 public String toString() {
31 String str = "";
32 Iterator itr = parkingLots.iterator();
33 if (itr.hasNext())
34 str += itr.next();
35 while (itr.hasNext()) {
36 str += "->" + itr.next();
37 }
38 return str;
39 }
40
41 public static void main(String[] args) {
42
43 ParkingManager pm = new ParkingManager();
44 Scanner sc = new Scanner(System.in);
45 String op;
46 int start, size;
47
48 while (sc.hasNext()) {
49 op = sc.next();
50 start = sc.nextInt();
51 size = sc.nextInt();
52 // System.out.println(op + " " + start + " " + size); // For checking
53 if (op.equals("ADD")) {
54 pm.addLots(start, size);
55 }
56 else if (op.equals("REMOVE")) {
57 pm.removeLots(start, size);
58 }
59 System.out.println(pm);
60 }
61 }
62 }
这是Lots类
class Lots {
6
7 /****** Attributes *********/
8 int lotStart; // start lot number in the group
9 int lotSize; // how many lots are there in this group?
10
11 /******* Constructors ********/
12 public Lots() {
13 }
14
15 public Lots(int start, int size) {
16 setLotStart(start);
17 setLotSize(size);
18 }
19
20 /******** Accessors *******/
21 public int getLotStart() {
22 return lotStart;
23 }
24
25 public int getLotSize() {
26 return lotSize;
27 }
28
29 /********* Mutators ********/
30 public void setLotStart(int start) {
31 lotStart = start;
32 }
33
34 public void setLotSize(int size) {
35 lotSize = size;
36 }
37
38 public String toString() {
39 return "[" + getLotStart() + ";" + getLotSize() + "]";
40 }
41 }
42
示例运行(输入以粗体显示): ADD 100 100 [100; 100] 删除150 10 [100; 50] - &GT; 160; 40] 删除145 10 [100; 50] - &GT; 160; 40] 删除100 10 [110; 40] - &GT; 160; 40] 删除190 10 [110; 40] - &GT; 160; 30] 删除120 8 [110; 10] - &GT; [128; 22] - &GT; 160; 30] (用户在这里输入ctrl-d)
我在这里死了。请帮忙:(