java - Android 上的错误 : java. lang.ArrayIndexOutOfBoundsException

标签 java android arrays

我有这段代码: indexOfChromosomes : 48 indexOfGens : 20 双截断; 双交叉; 双突变; 整代;

private Context context;

int indexOfChromosomes;
int indexOfGens;
int gensNumber;
int chromosomesNumber;

public AdapterDB(int Bits, double Truncation, double Crossover, double Mutation, int Chromosomes, int Generation, Context ctx)
{
    this.indexOfGens = Bits;
    this.Truncation = Truncation;
    this.Crossover = Crossover;
    this.Mutation = Mutation;
    this.indexOfChromosomes = Chromosomes;
    this.Generation = Generation;
    this.context = ctx;
    DBHelper = new DatabaseHelper (context);
}

String [][] population = new String[indexOfChromosomes][indexOfGens];

    public void generateChromosome()
{       
    for(chromosomesNumber = 0; chromosomesNumber < indexOfChromosomes ; chromosomesNumber++)
    {
                    int o = 0;
        for(gensNumber = 0; gensNumber < 12 ; gensNumber++)
        {
            Cursor l = db.rawQuery("SELECT _id, key_foodstuff, key_calorie, key_carbohydrate, key_fat, key_protein FROM (food INNER JOIN categories ON food.key_nocategory = categories.nocategories) WHERE key_type='primary' AND _id!=164 AND (key_carbohydrate!=0 OR key_protein!=0 OR key_fat!=0) ORDER BY RANDOM() LIMIT 1", null);

            if((l.moveToFirst()) && (l!=null))
            {   
                if (o == indexOfGens)
                {
                    gensNumber = 0;
                    sumOfCarbohydrateMor = 0;
                    sumOfFatMor = 0;
                    sumOfProteinMor = 0;
                    sumOfCalorieMor = 0;
                    o = 0;
                }

                population[chromosomesNumber][gensNumber] = l.getString(0);
                morning_food[k] = l.getString(3);
                sumOfCarbohydrateMor = sumOfCarbohydrateMor + Double.parseDouble(morning_food[k]);  
                morning_food[f] = l.getString(4);
                sumOfFatMor = sumOfFatMor + Double.parseDouble(morning_food[f]);
                morning_food[p] = l.getString(5);   
                sumOfProteinMor = sumOfProteinMor + Double.parseDouble(morning_food[p]);
                morning_food[c] = l.getString(2);   
                sumOfCalorieMor = sumOfCalorieMor + Double.parseDouble(morning_food[c]);
                if (((sumOfCarbohydrateMor >= (morning_car-(morning_car*0.2))) && (sumOfCarbohydrateMor <= morning_cal*1.1)) && ((sumOfProteinMor >= (morning_pro-(morning_pro*0.2))) && (sumOfProteinMor <= morning_pro*1.1)) && ((sumOfFatMor >= (morning_fat-(morning_fat*0.2))) && (sumOfFatMor <= morning_fat*1.1)))
                //if((sumOfCarbohydrateMor > (morning_car*0.6)) && (sumOfProteinMor > (morning_pro*0.7)) && (sumOfFatMor > (morning_fat*0.8)))
                {
                    Log.e("lala", "lalala");
                    break;
                }

                if ((sumOfCarbohydrateMor > (morning_car*1.1)) || (sumOfProteinMor > (morning_pro*1.1)) || (sumOfFatMor > (morning_fat*1.1)) || (sumOfCalorieMor > (morning_cal*1.1))
                {

                    morning_food[k] = l.getString(3);
                    sumOfCarbohydrateMor = sumOfCarbohydrateMor - Double.parseDouble(morning_food[k]);
                    morning_food[f] = l.getString(4);
                    sumOfFatMor = sumOfFatMor - Double.parseDouble(morning_food[f]);
                    morning_food[p] = l.getString(5);
                    sumOfProteinMor = sumOfProteinMor - Double.parseDouble(morning_food[p]);
                    morning_food[c] = l.getString(2);
                    sumOfCalorieMor = sumOfCalorieMor - Double.parseDouble(morning_food[c]);
                    gensNumber--;
                    o++;

                }   

            }
        }

第 48 行错误

错误说:java.lang.ArrayIndexOutOfBoundsException

有什么想法吗?谢谢你

最佳答案

尝试设置

population = new String[indexOfChromosomes][indexOfGens];

在您的 adapterDB 中。

看起来当你初始化 populatioin 时,indexOfChromosomes 和 indexOfGens 还没有初始化,所以你正在创建一个大小为 0 的数组。所以当你调用

population[chromosomesNumber][gensNumber] 

你得到 java.lang.ArrayIndexOutOfBoundsException

关于java - Android 上的错误 : java. lang.ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8162867/

相关文章:

android - AppCompat v7 : Should I use Framework FragmentManager or SupportFragmentManager?

android - 如何在 Ktor 中设置类似于 Retrofit 的`Retrofit.Builder().baseUrl(baseUrl) 的 basePath?

java - 如何打印已转换为对象的数组?

javascript - Jquery比较并返回字符串数组

java - 获取多个 Element JSoup Java Android

java - Spark SQL Java 无法将元组转换为行和数据帧

java - 如何将我的 apache 项目设置为默认程序启动

java - 如何解决竞争条件

java - 有没有办法在 Android 中打开 Wifi Activity 并获得 Android 中成功连接的结果

php - php中按权重从数组中随机取值