java for循环中给节点数组java.lang.NullPointerException。具体情况解释在代码中间段for循环注释部分。
publicclassmy{List<int[][]>open=newArrayList<int[][]>();List<int[][]>close=newArrayLi...
public class my {
List<int[][]> open=new ArrayList<int[][]>();
List<int[][]> close=new ArrayList<int[][]>();
for(int k=0;k<1;k++){
int[][] d1 = new int[arr1.length][arr1.length];
int[][] d2 = new int[arr1.length][arr1.length];
int[][] d3 = new int[arr1.length][arr1.length];
int[][] d4 = new int[arr1.length][arr1.length];
int min;
Node node1 = new Node(d1, 0, 0, null);
Node node2 = new Node(d2, 0, 0, null);
Node node3 = new Node(d3, 0, 0, null);
Node node4 = new Node(d4, 0, 0, null);
Node[] list=new Node[4];
list[0]=node1;
list[1]=node2;
list[2]=node3;
list[3]=node4;
}
min=list[0].h;
System.out.println(list[0].h);
for(int i=0;i<list.length;i++){
if(min>list[i].geth()){ //报错的地方在这一行,如果把[i]改成[0]
min=list[i].geth();//则如今‘这’一行同样也不会报错,
//下一次报错会出现在下一个for循环的
//list[i]所在的三行,同样[i]改成[0]则不会出错。
//同样是list[i],却min=list[i].geth();不会报错,其他都报错。
} //初学者感觉很奇怪,请大师指点。
//(代码经过删减,可能有误)
}
for(int i=0;i<list.length;i++){
if(min==list[i].geth()){
open.add(list[i].getArr());
}
else{
close.add(list[i].getArr());
}
}
}
public static void main(String[] args) {
my start = new my();
start.init();
}
public class Node {
private int[][] arr; //节点的数组属性
private int tag = 0; //节点的方向标志
private int h;//节点的估价函数值
private Node fatherNode; //节点的父节点
public Node(int[][] arr, int tag,int h, Node fatherNode){
this.arr = arr;
this.tag = tag;
this.h=h;
this.fatherNode = fatherNode;
public Node getFatherNode() {
return fatherNode;
}
public void setFatherNode(Node fatherNode) {
this.fatherNode = fatherNode;
}
public int geth() {
return h;
}
public void seth(int h) {
this.h = h;
public int[][] getArr() {
return arr;
}
}
} 展开
List<int[][]> open=new ArrayList<int[][]>();
List<int[][]> close=new ArrayList<int[][]>();
for(int k=0;k<1;k++){
int[][] d1 = new int[arr1.length][arr1.length];
int[][] d2 = new int[arr1.length][arr1.length];
int[][] d3 = new int[arr1.length][arr1.length];
int[][] d4 = new int[arr1.length][arr1.length];
int min;
Node node1 = new Node(d1, 0, 0, null);
Node node2 = new Node(d2, 0, 0, null);
Node node3 = new Node(d3, 0, 0, null);
Node node4 = new Node(d4, 0, 0, null);
Node[] list=new Node[4];
list[0]=node1;
list[1]=node2;
list[2]=node3;
list[3]=node4;
}
min=list[0].h;
System.out.println(list[0].h);
for(int i=0;i<list.length;i++){
if(min>list[i].geth()){ //报错的地方在这一行,如果把[i]改成[0]
min=list[i].geth();//则如今‘这’一行同样也不会报错,
//下一次报错会出现在下一个for循环的
//list[i]所在的三行,同样[i]改成[0]则不会出错。
//同样是list[i],却min=list[i].geth();不会报错,其他都报错。
} //初学者感觉很奇怪,请大师指点。
//(代码经过删减,可能有误)
}
for(int i=0;i<list.length;i++){
if(min==list[i].geth()){
open.add(list[i].getArr());
}
else{
close.add(list[i].getArr());
}
}
}
public static void main(String[] args) {
my start = new my();
start.init();
}
public class Node {
private int[][] arr; //节点的数组属性
private int tag = 0; //节点的方向标志
private int h;//节点的估价函数值
private Node fatherNode; //节点的父节点
public Node(int[][] arr, int tag,int h, Node fatherNode){
this.arr = arr;
this.tag = tag;
this.h=h;
this.fatherNode = fatherNode;
public Node getFatherNode() {
return fatherNode;
}
public void setFatherNode(Node fatherNode) {
this.fatherNode = fatherNode;
}
public int geth() {
return h;
}
public void seth(int h) {
this.h = h;
public int[][] getArr() {
return arr;
}
}
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询