【问题标题】:Should this method be static?这个方法应该是静态的吗?
【发布时间】: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;

} }

【问题讨论】:

    标签: class methods instance


    【解决方案1】:

    有两种方法可以实现这一点:

    First: 您应该编写setget 方法,调用set 方法来设置值,并调用get 方法来设置值get。您将在 class1 中设置值说您设置值,现在如果您想要 class2 中的相同值,您将调用 get 方法以将值作为数组获取并将该数组作为参数传递给 class2 的构造函数.

    Second: 您可以将整个对象传递给 class2 构造函数并在该类中使用该对象,您的值将相同并且数据不会受到损害,但为此您必须在数据类上实现 Serializable(您在两者中都使用。 )

    【讨论】:

    【解决方案2】:
    class a{
    
    ......
    function()
    {
    a,b
    }
    }
    
    class b{
    ...function(){
    here u need your variable value.
    call the function and store the variable value in new variable.
    }
    }
    if u need to do same u can do
    class c{
    ...function(){
    here u need your variable value.
    call the function and store the variable value in new variable.
    }
    }
    

    【讨论】:

    • 如果我有这个变量等于计算,无论如何我每次调用该方法时不会更新它吗?比如: int a = x + 1 ; int b = a;
    • 一个疑问......当你下次接受它时,你是否需要相同的变量值.....这是你的需要
    • 是的,我刚刚发布了带有数组的课程。我需要调用将接收用户值的类,然后计算数组中的一个点 (48)。当我实例化一次类时它会发现,但是当我再次实例化时,它会与值混淆。
    • 当您从另一个类中获取变量的值时,将该变量值存储到您的类中的新变量中。当您再次需要变量的值时,不要调用该函数。而不是从 bew 变量中获取值
    • 我已经这样做了,但是我遇到了一个问题,我需要在另一个类中再次调用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2010-10-18
    • 2013-03-14
    • 2016-07-16
    相关资源
    最近更新 更多