我有一个设置数组的类。另一个类扩展了这个类,并在方法中使用了所提到的数组来返回另一个数组。当我这样做时,我收到一个空异常,但是当我设置原始数组时,它工作得很好。不知道我在这里做错了什么。在这方面还是很新的。接收空指针异常
,设置了阵列(它的一部分)的类:
public class InitialGrids {
int iic,ioc,iman ;
int nic, noc;
double masIC, masOC, masMAN;
double volIC, volOC, volMAN, volP;
double radIC, radOC, radP;
public int iMat[ ];
public double rad[ ];
public double vol[ ];
public double mas[ ];
public double dmas[ ];
public double [ ] radius(int nr)
{
rad = new double [nr +1];
for(int k = 0 ; k <= nic ; k++)
{
rad[ k ] = radIC * ((double) k/nic);
System.out.println("the radius at shell " + k + " is " + rad[k]);
}
for(int k = nic + 1 ; k <= noc ; k++)
{
rad[ k ] = radIC + ((radOC - radIC) * ((double) (k - nic)/(noc - nic)));
System.out.println("the radius at shell " + k + " is " + rad[k]);
}
for(int k = noc + 1 ; k <= nr ; k++)
{
rad[ k ] = radOC + ((radP - radOC) * ((double) (k - noc)/(nr - noc)));
System.out.println("the radius at shell " + k + " is " + rad[k]);
}
return(rad);
}
这是延伸InitialGrids(部分)类:
public class Compression extends InitialGrids {
double G;
double PI;
double Pave;
double x, z, dy, dz, dydx; // this is for the iteration that will update the density
double delta;
double mix;
public double grav[ ];
public double P[ ];
public double rhon[ ];
public double radn[ ];
public double [ ] gravity(int nr)
{
G = Constants.PI;
PI = Constants.PI;
grav = new double [ nr + 1 ];
for(int k = 1; k <= nr; k++)
{
grav[ 0 ] = 0;
grav[ k ] = ((G*mas[k])/(Math.pow(rad[k], 2)));
}
return(grav);
}
我在主类调用这些如:
InitialGrids ig = new InitialGrids();
ig.setup(icMat, ocMat, manMat, nr, masP, fic, foc, fman, fSi, fSi, fO);
ig.material(nr);
ig.radius(nr);
ig.density(nr,fSi, fSi, foc);
ig.volume(nr);
ig.dmass(nr);
ig.mass(nr);
Compression com = new Compression();
com.gravity(nr);
com.pressure(nr);
com.newDensity(nr);
com.radn(nr);
您能否显示堆栈跟踪? – Mingyu
你是指我的主类中调用这些方法的所有语句? – handroski