为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

眼眸繁星 2021-10-13 16:16:13
所以,这是我的类,其中包含我的构造函数和访问器方法: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;    }}代码可能很草率,因为我一直在试图找出此错误的解决方案,但这是我正在尝试运行的驱动程序。尝试从另一个类中的访问器方法调用我的值时发生错误。
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

你的 setBal 函数是错误的。


public double setBal(double b)

{

    // Declaring instance variables

    // b = bal; <--- wrong

    bal = b; // <--- right

    return bal;

}


查看完整回答
反对 回复 2021-10-13
?
LEATH

TA贡献1936条经验 获得超6个赞

在您的 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' 访问这些值,因为它们仍然指的是以前的数组。


因此,当您迭代时,请改用以下代码片段,


   for(int i=0;i<5;i++){


        System.out.println(d[i]);

    }

   for(int i=0;i<6;i++){


        System.out.println(w[i]);

    }

我希望这能帮到您!


查看完整回答
反对 回复 2021-10-13
  • 2 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信