不能 select 具有正确索引的数组对象

Can't select Object of Array with correct index

我们正在开发一款怪物和英雄的游戏。
英雄初始化后,他具有给定的力量。 (在本例中为 50)
强度是双精度的两位数。
根据英雄的实力,其携带各种物品的能力按照以下规则初始化:

如果强度在1到10之间(含),则强度乘以10。
强度在10.01和20(含)之间,是以下数组的容量: {115,130,150,175,200,230,260,300,350,400}。该指数是通过从强度中减去 10 并向下舍入该数字来确定的。 (因为强度用双倍表示)。
高于20的力量是通过计算英雄力量负10的能力并将其乘以4来计算的。

这是我计算容量的代码。

    private final int[] capacities = new int[]{115,130,150,175,200,230,260,300,350,400}; //initialized array of integers.
    public double calculateCapacity(){
    if(1<=getStrength() && getStrength()<=10){
        return getStrength()*10; //method does this correctly
    }
    else if(10<getStrength() && getStrength()<=20){
        return this.capacities[(int) (getStrength()-10.01)]; //Here it already goes wrong. 
    }
    else{
        double valueToReturn = 0;
        double tempStrength = getStrength();
        while(tempStrength >20){
            valueToReturn++;
            tempStrength = tempStrength - 10;
        }
        System.out.println((int) (tempStrength-10.01));
        return Math.pow(4,valueToReturn)*getCapacities()[(int) (tempStrength-10.01)];
    }


}  

系统打印输出为:9

最后一个 return 语句出错了。其中 java 出于某种原因不想从数组中取出第九个整数。我不断收到 NullPointerExceptions,但我认为索引是正确的并且数组也已正确初始化。有谁知道为什么它不起作用? (getCapacities 是基本的 getter)

数组必须为空。

你确定此时数组已经初始化了吗? class 的构造函数能否以某种方式调用 calculateCapacity()? 什么是堆栈跟踪? 为什么在一个地方使用容量而在另一个地方使用 getCapacities()?