【发布时间】:2019-07-31 12:54:09
【问题描述】:
我有一个任务:
使用类 Node 实现一个 String 对象的链表(参见 Big >Java Early Objects 16.1.1)。编写方法,可以插入 > 和删除对象,以及打印列表中的所有对象。 >要求列表中的所有元素始终按照>字符串的自然顺序(可比较)进行排序。
我似乎无法正确使用的方法是 addElement 方法
全班都在这里:https://pastebin.com/Swwn8ykZ 和mainApp:https://pastebin.com/A22MFDQk
我看过这本书(Big Java Early Objects),也看过 geeksforgeeks
public void addElement(String e) {
Node newNode = new Node();
if (first.data == null) {
first.data = e;
System.out.println("Success! " + e + " has been
added!");
} else if (first.data.compareTo(e) == 0) {
System.out.println("The element already exists in the
list");
} else {
while (first.next != null) {
if (first.next.data.compareTo(e) != 0) {
first.next.data = e;
} else {
first.next = first.next.next;
}
}
}
}
public static void main(String[] args) {
SortedLinkedList list = new SortedLinkedList();
String e1 = new String("albert");
String e2 = new String("david");
String e3 = new String("george");
String e4 = new String("jannick");
String e5 = new String("michael");
// ----------------SINGLE LIST--------------------------
list.addElement(e1);
list.addElement(e2);
list.addElement(e3);
list.addElement(e4);
list.addElement(e5);
System.out.println("Should print elements after this:");
list.udskrivElements();
}
}
预期结果:五个名字打印在一个列表中
实际结果:打印的名字
【问题讨论】:
-
您想以排序方式插入?
-
尝试调试该方法以查看它的作用。提示:你永远不会“先”移动
-
@VinayHegde 是的,这正是我想要的 - 列表应该在插入前后进行排序
-
顺便说一句,你的
removeElement(来自 pastebin)也不起作用 -
@HansKesting 是的,它给该行一个 NullPointerException - if(temp.data.equals(e)) - 这对我来说没有任何意义,因为前面的行明确表示 - while (temp != null)...