gpt4 book ai didi

java - 创建递归树时出现运行时错误(空点异常)

转载 作者:行者123 更新时间:2023-12-01 14:48:45 25 4
gpt4 key购买 nike

我想将以下内容作为Json输入并将其转换为java中的树数据结构。

                {
"component": "A",
"status": 0,
"children": [
{
"component": "AA",
"status": 0,
"children": [
{
"component": "AAA",
"status": 0,
"children": []
},
{
"component": "AAB",
"status": 0,
"children": []
}
]
},
{
"component": "AB",
"status": 0,
"children": [
{
"component": "ABA",
"status": 0,
"children": []
},
{
"component": "ABB",
"status": 0,
"children": []
}
]
}
}

我编写了以下代码,但如果有人能找到错误,它会显示运行时错误。 for 循环正在执行,直到通过递归该节点没有子节点为止,此时它应该返回显示空指针异常的位置

            import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import java.io.BufferedReader;
import org.json.*;

public class Sample {

public static void main(String[] args) {

BufferedReader in = new BufferedReader( new FileReader("json.txt") );
StringBuilder builder = new StringBuilder();
String line;
while ( ( line = in.readLine() ) != null ) {
builder.append(line);

object = new JSONObject( builder.toString() );
imlementation im = new imlementation();
im.createnode(object);
}
}
public class node {
public String component;
public int status;
public List<node> children;
}

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class imlementation {

public node createnode(JSONObject ob)
{
node n = new node();
try
{
JSONArray children = ob.getJSONArray("children");
String component = ob.getString("component");
int status = ob.getInt("status");

n.component = component;
n.status = status;
n.children=null;
System.out.println( "component " + component + "status " + status );

int i;
for(i=0;i<children.length();i++)
{
n.children.add( createnode( children.getJSONObject( i ) ) );
}
return n;

}
catch ( JSONException ex )
{
ex.printStackTrace();
}

}

}

堆栈跟踪是

            java.lang.NullPointerException
at imlementation.createnode(imlementation.java:30)
at imlementation.createnode(imlementation.java:30)
at SampleSample.main(SampleSample.java:45)
java.lang.NullPointerException
at imlementation.createnode(imlementation.java:30)
at SampleSample.main(SampleSample.java:45)

最佳答案

你已设置

n.children=null;

然后在 for 循环中你正在做

n.children.add(....)

这可能导致空指针异常。

你可能需要这样做

n.children = new List<Node>()

在添加之前。

另一个潜在的原因是在某些递归调用期间,children 变量可能为 null。 Children.length 会导致空指针异常。

关于java - 创建递归树时出现运行时错误(空点异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15106311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com