方法的空指针异常

时间:2013-11-22 21:22:31

标签: java nullpointerexception linked-list copy

当我调用my方法创建传递参数的新String复制时,我得到一个空指针异常。这个方法是从我的主要调用。

为什么我会收到此错误以及如何解决此问题,因此它未指向null?

它说错误发生在这一行:front.data = original.charAt(i);

如果我将大小更改为-1,则会在此行back.next = newNode;

上显示错误

主要(方法的相关部分):

public class TestLString {
  /** Main method */
   public static void main(String[] args) {

      String str1 = "Hello, my name is Alphose!";
      LString lstr1 = new LString(str1);

编辑:这似乎有效!

   public LString(String original){
  size = 0;
  for(int i = 0; i< original.length(); i++){
     if(original.length() == 0){                              ///changed
        front = new Node();
        front.data = original.charAt(i);
        front.next = back;
        size++;
     } else{
           Node newNode = new Node();
           newNode.data = original.charAt(i);
           Node back = new Node();
           back.next = newNode;
           newNode.next = null;
           back = newNode;
       }
  }
  } 

我初始化的数据字段(抱歉)。如果我可以添加任何其他内容,请告诉我。

public class LString{


   private Node front = null;  //first val in list
   private Node back;   //last val in list
   private int size = 0;
   private int i;
   private int offset;

   public LString(){
      //construct empty list
      Node LString = new Node();
      front = null;

   }

2 个答案:

答案 0 :(得分:2)

你在哪里

if (front == null) { front.data = ...; }

这绝对不行。如果front为空,则无法为其data成员分配值。

答案 1 :(得分:2)

修改

替代理论:

您需要在使用前初始化前端:

front = new Node();
front.data = original.charAt(i);
front.next = back;
size++;

原创理论

我猜这不是

if(front == null){
你的意思是

if(front != null){

因为如果front为空,则无法访问其数据(front.data = ...)。