主题:java初学者,问一个NullPointerException问题
如下代码在执行到a.addEdge(s,t,w)是会抛出异常,请问如何解决。
我先在类Edge里面声明了数组Edgei arr[20];然后在 Edge()方法里对 数组进行了分配空间,然后要对数组赋值,结果就出现了异常,请问要怎么办呢?
执行:
2 3
1 2 4
java.lang.NullPointerException
2 1 4
java.lang.NullPointerException
1 1 3
java.lang.NullPointerException
代码:
import java.util.Scanner;
public class InputByScanner {
public static void main(String[]args){
Scanner scan=new Scanner(System.in);
int vN,eN,s,t,w;
vN=scan.nextInt();
eN=scan.nextInt();
Edge a=new Edge(vN);
for(int i=0;i<eN;i++)
{
s=scan.nextInt();
t=scan.nextInt();
w=scan.nextInt();
a.addEdgea(s, t, w);
}
a.outputEdge();
}
}
class Edgei{
int s,t,w,next;
}
class Edge{
int[]pre;
int eN;
int vN;
Edgei [] arr;
Edge(int t)
{
eN=0;
vN=t;
pre=new int [20] ;
arr=new Edgei[100];
for(int i=0;i<20;i++)
pre[i]=-1;
}
void addEdgea(int s,int t,int w)
{
try{
arr[eN].s=s;
arr[eN].t=t;
arr[eN].w=w;
arr[eN].next=pre[s];
pre[s]=eN;
eN++;
}catch(NullPointerException a){
//System.out.println("NullPointerException!!!");
System.out.println(a.toString());
}
}
void outputEdge()
{
for(int i=1;i<=vN;i++)
{
int j=pre[i];
while(j!=-1)
{
System.out.println(arr[j].s+"+"+arr[j].t+"+"+arr[j].w);
j=pre[j];
}
}
}
}
我先在类Edge里面声明了数组Edgei arr[20];然后在 Edge()方法里对 数组进行了分配空间,然后要对数组赋值,结果就出现了异常,请问要怎么办呢?
执行:
2 3
1 2 4
java.lang.NullPointerException
2 1 4
java.lang.NullPointerException
1 1 3
java.lang.NullPointerException
代码:
import java.util.Scanner;
public class InputByScanner {
public static void main(String[]args){
Scanner scan=new Scanner(System.in);
int vN,eN,s,t,w;
vN=scan.nextInt();
eN=scan.nextInt();
Edge a=new Edge(vN);
for(int i=0;i<eN;i++)
{
s=scan.nextInt();
t=scan.nextInt();
w=scan.nextInt();
a.addEdgea(s, t, w);
}
a.outputEdge();
}
}
class Edgei{
int s,t,w,next;
}
class Edge{
int[]pre;
int eN;
int vN;
Edgei [] arr;
Edge(int t)
{
eN=0;
vN=t;
pre=new int [20] ;
arr=new Edgei[100];
for(int i=0;i<20;i++)
pre[i]=-1;
}
void addEdgea(int s,int t,int w)
{
try{
arr[eN].s=s;
arr[eN].t=t;
arr[eN].w=w;
arr[eN].next=pre[s];
pre[s]=eN;
eN++;
}catch(NullPointerException a){
//System.out.println("NullPointerException!!!");
System.out.println(a.toString());
}
}
void outputEdge()
{
for(int i=1;i<=vN;i++)
{
int j=pre[i];
while(j!=-1)
{
System.out.println(arr[j].s+"+"+arr[j].t+"+"+arr[j].w);
j=pre[j];
}
}
}
}