当我调用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;
}
答案 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 = ...
)。