我想我已經走得很遠了,但我處於邏輯掛斷狀態,也許你們有些聰明的人可以幫助我!問題了解插入節點的方法java
public class ItemList{
ItemInfoNode head;
ItemInfoNode tail;
int listCount = 0;
public ItemList(){
head = tail = null;
}
public void insertInfo(String name, String rfidTag, String initPosition, double price){
ItemInfo obj = new ItemInfo(name, rfidTag, initPosition, initPosition, price);
ItemInfoNode temp = new ItemInfoNode();
temp.setInfo(obj);
if(head == null){ head = tail = temp; }
else{
if(head == tail){//BEGIND SECOND OBJECT HANDLING
if(head.getInfo().getTag().compareToIgnoreCase(rfidTag) <= 0){//to see if temp belongs after head
head.setNext(temp);
temp.setPrev(head);
tail = temp;
}
else{
ItemInfoNode nodePtr = head;
head = temp;
tail = nodePtr;
head.setNext(tail);
tail.setPrev(head);
}
}//END SECOND OBJECT HANDLING
else{
if(head.getInfo().getTag().compareToIgnoreCase(rfidTag) > 0){
ItemInfoNode nodePtr = head;
head = temp;
temp.setNext(nodePtr);
temp.getNext().setPrev(head);
}
else if(head.getInfo().getTag().compareToIgnoreCase(rfidTag) <= 0 && tail.getInfo().getTag().compareToIgnoreCase(rfidTag) > 0){
head.setNext(temp);
temp.setPrev(head);
}
else{//item bigger then tail
ItemInfoNode nodePtr = tail;
tail = temp;
tail.setPrev(nodePtr);
tail.getPrev().setNext(tail);
}
}
}
listCount++;
}}
現在這種方法的目的顯然是要插入它們所屬的節點,但他們需要得到他們的rfidTag字符串,這是一個十六進制數進行排序,我不知道這是否是顯而易見的,但我希望從最小訂單到最大訂單。現在,您可以看到我的代碼變得非常複雜並且很難遵循和處理,但我認爲我很接近,任何人都可以提供任何提示或「邏輯指導」,以幫助我更好地瞭解如何獲取此信息正常工作?在目前的狀態下,它正在銷燬我的列表,有點循環,然後拋出一個NullPointerException!
編輯**:所以我修改了我的代碼並添加了註釋以顯示我期望完成的更簡明的解釋,也許有人可以幫助我理解如何現在使用這些方法?
我現在非常接近,它工作時,我把它們將在列表中的順序對象,但如果我嘗試插入屬於中間某處的對象節點我摧毀我的列表,我沒有看到我的錯誤,任何人都看到了嗎?主要參考
public class Test{
public static void main(String args[]){
ItemInfo item = new ItemInfo(null, null, null, null, 0);
item.setName("Chocolate");
item.setTag("2");
item.setOrigin("s12345");
item.setCurrent("s12345");
item.setPrice(30.00);
ItemInfo item2 = new ItemInfo(null, null, null, null, 0);
item2.setName("Buzz Lightyear");
item2.setTag("1");
item2.setOrigin("d67890");
item2.setCurrent("d67890");
item2.setPrice(15.99);
ItemInfo item3 = new ItemInfo(null, null, null, null, 0);
item3.setName("Hotwheels");
item3.setTag("000000000");
item3.setOrigin("h34743");
item3.setCurrent("h34743");
item3.setPrice(24.25);
ItemInfo item4 = new ItemInfo(null, null, null, null, 0);
item4.setName("Barbie");
item4.setTag("FFFFFFFFF");
item4.setOrigin("s49862");
item4.setCurrent("s49862");
item4.setPrice(21.22);
ItemInfo item5 = new ItemInfo(null, null, null, null, 0);
item5.setName("Bicycle");
item5.setTag("CCCCCCCCC");
item5.setOrigin("k28475");
item5.setCurrent("k28475");
item5.setPrice(10.99);
ItemInfoNode nood = new ItemInfoNode();
ItemInfoNode nood2 = new ItemInfoNode();
ItemInfoNode nood3 = new ItemInfoNode();
ItemInfoNode nood4 = new ItemInfoNode();
ItemInfoNode nood5 = new ItemInfoNode();
nood.setInfo(item);
nood2.setInfo(item2);
nood3.setInfo(item3);
nood4.setInfo(item4);
nood5.setInfo(item5);
ItemList list = new ItemList();
list.insertInfo(item.getName(), item.getTag(), item.getCurrent(), item.getPrice());
list.insertInfo(item2.getName(), item2.getTag(), item2.getCurrent(), item2.getPrice());
list.insertInfo(item3.getName(), item3.getTag(), item3.getCurrent(), item3.getPrice());
list.insertInfo(item4.getName(), item4.getTag(), item4.getCurrent(), item4.getPrice());
list.insertInfo(item5.getName(), item5.getTag(), item5.getCurrent(), item5.getPrice());
list.printAll();
}
}
而且我的輸出,以及...
風火輪小汽車 自行車
現在,如果我改變5個對象的rfidTags使下一個比最後一個大,但它的工作,但如果他們現在被放在方式,不會。
是的,我試圖找出如何減少它,但仍然不會錯過任何東西,哇感謝您的幫助 – Sherifftwinkie 2013-02-22 21:06:44