我創建了一個鏈接列表,以及它的一些方法。我負責創建一個名稱列表。在主要中,指示用戶輸入名稱,然後程序看到名稱是否位於列表中。它編譯,但唯一我無法弄清楚的是如何打印該名稱未找到。感謝您的幫助!這裏是我的代碼鏈接列表輸出
package linkedlists;
import java.util.*;
public class Link {
public String Name;
public Link next;
public Link(String Name){
this.Name = Name;
}
public void display(){
System.out.println("Name in List " + Name);
}
@Override
public String toString(){
return Name;
}
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
LinkList theLinkedList = new LinkList();
theLinkedList.insertFirstLink("James");
theLinkedList.insertFirstLink("John");
theLinkedList.insertFirstLink("Michael");
theLinkedList.insertFirstLink("Peter");
theLinkedList.insertFirstLink("Allison");
theLinkedList.insertFirstLink("Daniel");
theLinkedList.insertFirstLink("George");
theLinkedList.insertFirstLink("Simon");
theLinkedList.insertFirstLink("Jason");
theLinkedList.insertFirstLink("Mark");
System.out.print("Please enter a Name to search for");
System.out.println();
String name;
name = input.nextLine();
//System.out.println(theLinkedList.find(name).Name);
if (theLinkedList.find(name).Name == null){
System.out.println("Not Found");
System.out.println();
theLinkedList.display();
}
else {
System.out.println(theLinkedList.find(name).Name + " was found.");
System.out.println();
theLinkedList.display();
}
}
}
,這是鏈表類 類鏈表{ 公共鏈接首聯;
LinkList(){
firstLink = null;
}
public boolean isEmpty(){
return (firstLink == null);
}
public void insertFirstLink(String Name){
Link newLink = new Link(Name);
newLink.next = firstLink;
firstLink = newLink;
}
public Link removeFirst(){
Link linkReference = firstLink;
if (!isEmpty()){
firstLink = firstLink.next;
}
else {
System.out.println("Empty Linked List");
}
return linkReference;
}
public void display(){
Link theLink = firstLink;
while (theLink != null){
theLink.display();
System.out.println("Next Name in List: " + theLink.next);
theLink = theLink.next;
System.out.println();
}
}
public Link find(String Name){
Link theLink = firstLink;
if(!isEmpty()){
while(!(theLink.Name.equals(Name))){
if(theLink.next == null){
return null;
} else {
theLink = theLink.next;
}
}
} else {
System.out.println("Empty LinkedList");
}
return theLink;
}
public Link removeLink(String Name){
Link currentLink = firstLink;
Link previousLink = firstLink;
while(currentLink.Name != Name){
if (currentLink.next == null){
return null;
}
else{
previousLink = currentLink;
currentLink = currentLink.next;
}
}
if (currentLink == firstLink){
firstLink = firstLink.next;
}
else {
System.out.println(" Found a match!");
System.out.println("Current Link: " + currentLink);
System.out.println("First Link: " + firstLink);
previousLink.next = currentLink.next;
}
return currentLink;
}
}
該邏輯看似NullPointerException的成熟。當列表爲空時,您將返回空鏈接。然後嘗試訪問該名稱... –