猿问

向驱动程序返回值时出现空异常错误

所以,这是我的类,其中包含我的构造函数和访问器方法:


public class sac

{

// Initializing instance variables.

private double bal;

private double[] dep;

private double[] wit;


/**

 * Constructor for objects of class sac

 */

public sac()

{

    //Declaring instance variables

    bal = 500;


    //Deposits:

    double[] dep = new double[5];

    dep[0] = 100.00;

    dep[1] = 124.00;

    dep[2] = 78.92;

    dep[3] = 37.55;

    dep[4] = 83.47;


    //Withdrawals:

    double[] wit = new double[7];

    wit[0] = 29.88;

    wit[1] = 110.00;

    wit[2] = 27.52;

    wit[3] = 50.00;

    wit[4] = 12.90;

    wit[5] = 15.20;

    wit[6] = 11.09;

}


/**

 * Returns and sets the value of balance.

 *

 * 

 * @return bal

 */

public double setBal(double b)

{

    //Declaring instance variables

    b = bal;

    return bal;

}


/**

 * Returns and sets the values of deposits.

 *

 * 

 * @return deposits

 */

public double[] getDep()

{

    double[] d = new double[5];

    //Deposits:

    d[0] = dep[0];

    d[1] = dep[1];

    d[2] = dep[2];

    d[3] = dep[3];

    d[4] = dep[4];

    return d;

}


/**

 * Returns and sets the values of withdrawals.

 *

 * 

 * @return withdrawals

 */

public double[] getWit()

{

    double[] w = new double[7];

    //Withdrawals:

    w[0] = wit[0];

    w[1] = wit[1];

    w[2] = wit[2];

    w[3] = wit[3];

    w[4] = wit[4];

    w[5] = wit[5];

    w[6] = wit[6];

    return w;

    }


}

代码可能很草率,因为我一直在试图找出此错误的解决方案,但这是我正在尝试运行的驱动程序。尝试从另一个类中的访问器方法调用我的值时发生错误。


眼眸繁星
浏览 148回答 2
2回答

www说

你的 setBal 函数是错误的。public double setBal(double b){&nbsp; &nbsp; // Declaring instance variables&nbsp; &nbsp; // b = bal; <--- wrong&nbsp; &nbsp; bal = b; // <--- right&nbsp; &nbsp; return bal;}

LEATH

在您的 sacDemo 类中,您正在初始化新的数组对象并将它们分配给变量 d 和 w。double[] dep = new double[5];;// {0.0 , 0.0 , 0.0 , 0.0 , 0.0 }double[] wit = new double[7];// {0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 }double[] d = dep; // {0.0 , 0.0 , 0.0 , 0.0 , 0.0 }double[] w = wit; // {0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 }所以在这行 'd' 和 'w' 之后,每个元素都会被初始化为 0.0 值。在 java 中, = (assignment ) 运算符从右到左工作。您在 'dep' 中的内容将被分配给 'd',因此迭代 d 和 w 将产生具有 0.0 值的元素。w = sac.getWit();d = sac.getDep();在此之后,您可以使用 'w' 和 'd' 而不是 'dep' 和 'wit' 访问这些值,因为它们仍然指的是以前的数组。因此,当您迭代时,请改用以下代码片段,&nbsp; &nbsp;for(int i=0;i<5;i++){&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(d[i]);&nbsp; &nbsp; }&nbsp; &nbsp;for(int i=0;i<6;i++){&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(w[i]);&nbsp; &nbsp; }我希望这能帮到您!
随时随地看视频慕课网APP

相关分类

Java
我要回答