【发布时间】:2014-02-17 05:25:38
【问题描述】:
我对 java 还很陌生,目前正在调试一个程序。所以我有一个类,它有一个简单的方法和一些计算。基本上,当我从另一个类调用此方法以使用变量(恰好是正在计算其中一些变量的数组的一部分)时,我得到了我需要的计算。然后我在另一个班级再次调用它,它再次计算并且我的数字受到影响。有没有办法让这个方法获取一些值,计算然后保持不变?
这是数组类。我需要实例化一次,然后当我再次调用它时让数组的值是静态的。有没有办法在我调用数组时让方法保持不变?
在另一个班级我使用 PlanMat pm = new PlanMat() 然后像 pm.materials(fSi, fS, fO);并调用数组 pm.rho0[48];
public class PlanMat {
Constants con = new Constants();
double GPa = con.GPascals;
Main m = new Main();
public int i ;
public int eos [ ];
public double rho0 [ ];
public double c [ ];
public double nn [ ];
public double Ks0 [ ];
public double Ksp [ ];
public void materials(double fSi, double fS, double fO)
{
i = 0;
eos = new int [ 51 ];
rho0 = new double [ 51 ];
c = new double [ 51 ];
nn = new double [ 51 ];
Ks0 = new double [ 51 ];
Ksp =new double [ 51 ];
double fFeS = ( ((con.M_Fe / con.M_S) + 1) * fS );
double fFeSi = ( ((con.M_Fe / con.M_Si) + 1) * fSi);
double fFeO = ( ((0.950 * con.M_Fe) + con.M_O) / (1.95 * con.M_O) * fO);
double fFe = 1.0 - fFeS - fFeSi - fFeO;
i = 48;
eos [ i ] = 1;
rho0 [ i ] = 1.0 / ( (fFe / rho0[3]) + (fFeSi / rho0[21])
+ (fFeO / rho0[22]) + (fFeS / rho0[13]) );
Ks0 [ i ] = fFe * Ks0[3] + fFeSi * Ks0[21] + fFeO * Ks0[22]
+ fFeS * Ks0[13];
Ksp [ i ] = fFe * Ks0[3] + fFeSi * Ks0[21] + fFeO * Ks0[22]
+ fFeS * Ks0[13];
c [ i ] = 0.0;
nn [ i ]= 0.0;
} }
【问题讨论】: