Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在链表末尾插入项目时出现问题Java无法工作_Java_Linked List - Fatal编程技术网

在链表末尾插入项目时出现问题Java无法工作

在链表末尾插入项目时出现问题Java无法工作,java,linked-list,Java,Linked List,我试图在链接列表的末尾添加一个项目,但出现以下错误: Exception in thread "main" java.lang.NullPointerException at List.insertAtEnd(List.java:105) at MainProgram.stringOperation(MainProgram.java:178) at MainProgram.main(MainProgram.java:97) class Link

我试图在链接列表的末尾添加一个项目,但出现以下错误:

Exception in thread "main" java.lang.NullPointerException
    at List.insertAtEnd(List.java:105)
    at MainProgram.stringOperation(MainProgram.java:178)
    at MainProgram.main(MainProgram.java:97)



 class Link
    {
       public Object data;
       public Link next;
    }  


// List Class Method:insertAtEnd: insert a given item at the end of the list - 
       public void insertAtEnd(Object item)
       {
             //Create a New Link    
             Link newLink = new Link();
             newLink.data = item;
             newLink.next = null;
          
             //Set _tail to point to null
             _tail.next = newLink;
             _tail = newLink;
             
          
             //Add to  the Counter - For the Number of Elements in the Linked List
             _numOfElements++;
       }
主程序-方法之一

//StringOperations
   public static void stringOperation(int option)
   {
      Scanner keyboard = new Scanner(System.in);
      
      //Variables needed from User
      int index, startPosition, endPosition;
      String data;
      
      //Instances needed to Perform Operations (1-9)
      Link link;
      List listOfIndexes;
      
      
      //Switch Statement to Perform Operations
      switch(option)
      {
        
         
         //Operation 3: insertAtEnd
         case 3:
            System.out.print("Please enter a String: ");
            data = keyboard.nextLine();
            
            stringList.insertAtEnd(data);
            
            System.out.println("Completed Operation 3 for the String List." + "\n");
            break;
         
         
      }
   }
我想添加更多的代码,但为了让大家更好地理解,我一直在StackOverflow上遇到一个错误。我需要确保每当我向链表中添加一个项目时,我的尾巴都在更新,以便有一个更高效的程序

更新版本:

 private Link _head;
   private Link _tail;
   private int _numOfElements = 0;
   
   /*Public Methods */
   
   //(1) initialize: create an empty list (no items) - DONE!
   public List()
   {
      _head = null;
      _tail = null;
   }
   

默认情况下,列表按插入项目的方式排序:

java.util.List<String> list = new LinkedList<>();
list.add("First item");
list.add("Second item");
java.util.List=新建LinkedList();
列表。添加(“第一项”);
列表。添加(“第二项”);

在指定值之前,不能引用tail.next

只需在InsertAttend函数中使用此选项:

if(_tail != null){
           _tail.next = newLink;
    }
            _tail = newLink;


哪一行是105,什么是尾巴?我想尾巴是空的。请显示定义和使用代码的位置。专用链接\u head;专用链路;私有int_numOfElements=0/*公共方法*//(1)初始化:创建空列表(无项)-完成!public List(){u head=null;{u tail=null;}Yup\u tail为null。在为_tail赋值之前,不能使用_tail.next。是否为以下内容://创建新链接newLink=newLink();newLink.data=项目;newLink.next=null//将_tail设置为指向null _tail=newLink_tail.next=newLink;法赞,谢谢你的帮助!我照你的建议做了;但是,我的toString方法没有打印出我输入的字符串,我认为它现在可以工作了。我在第一个索引中添加了一个项,然后使用insertEnd方法,它就可以工作了。每当我首先使用insertEnd方法而不添加任何项时,我不会得到任何错误;但是,我的toString不显示我的项目。谢谢你,法齐安!