刚开始学JAVA,链表发现调用失败,求高手指点
代码还没写完,在测试功能的时候就出现问题了:package linkedlist;
import java.util.*;
class Node //建立泛型类的单链表
{
public Object data;
public Node next;
public Node(Object data,Node next){ //构造方法
this.data=data;
this.next=next;
}
public Object getData(){
return data;
}
public void setData(Object data){
this.data=data;
}
public Node getNext(){
return next;
}
public void setNext(Node next){
this.next=next;
}
}
public class LinkedList {
Node first; //头部
Node tail; //尾部
int length; //长度
public void add(Object ndata) //实现插入操作
{
Node item=new Node(ndata,null);
Node temp=first;
while(null!=temp.getNext()){
temp=temp.getNext();
}
temp.setNext(item);
length++;
}
public void delete(int index){ //实现删除操作
Node temp=first;
for(int i=0;i<index-1;i++){
temp=temp.getNext();
}
length--;
temp.setNext(temp.getNext().getNext());
}
public void find(int index){ //实现查找操作
Node temp=first;
for(int i=0;i<index;i++){
temp=temp.getNext();
}
System.out.println(temp.getData());
}
public void union(){
}
public void intersection(){
}
public void difference(){
}
public static void main(String[] args) {
LinkedList list=new LinkedList();
Scanner in=new Scanner(System.in);
System.out.println("请输入集合1:"); //输入集合1
String st1=in.nextLine();
System.out.println("请输入集合2:");
String st2=in.nextLine();
System.out.println("请输入数字进行相应操作:");
System.out.println("0:退出 1:插入 2:删除 3:查找");
int num=in.nextInt();
switch(num){
case 0:
break;
case 1:
System.out.println("结果为:");
list.add(st1);
list.add(st2);
break;
case 2:
System.out.println("结果为:");
break;
case 3:
list.add(st1);
list.add(st2);
System.out.println("结果为:");
list.find(2);
break;
default:
System.out.println("输入有误,请重新输入:");
}
}
}
输出结果:
----------------解决方案--------------------------------------------------------
空指针异常,看你的37行和90行是不是有什么注入或者设值的,里面的参数或许是null,你看看是你没有初始化,还是你的值没有设值好
----------------解决方案--------------------------------------------------------