Java矩阵如何将int 1或0分配给2D数组?

Java矩阵如何将int 1或0分配给2D数组?,java,arrays,indexing,Java,Arrays,Indexing,这是我的部分代码。我想首先将随机数分配给矩阵总体[],然后将随机数与特定数字ranP进行比较,如果总体[]【】

这是我的部分代码。我想首先将随机数分配给矩阵总体[],然后将随机数与特定数字ranP进行比较,如果总体[]【】
arrayindexoutofboundsexception 0
在这个问题上需要帮助。谢谢

            randGen = new Random();
            double randNum = randGen.nextDouble();

            for ( int i = 0; i < 11; i++){
                for (int k = 0; k < inipopulationsize; k++){
                    for (int j = 0; j < 25; j++){



                        ranP = 0.5;
                        //TMaxtrix[i][j] = matrix[i][j];
                        System.out.println(matrix[i][j] + " ");
                        population = new double[k][j];
                        System.out.println("randNum: " + randNum);
                        population[k][j] = randNum;
                        if (randNum <= ranP){
                            population[k][j] = 1;
                        }
                        else
                            population[k][j] = 0;
                        System.out.println("population: " + population[k][j]);

                    }//j loop


                }//k loop

            }//i loop
这是我自己学的,不上课。如果这真的困扰着你的专家,你为什么不干脆忽略它,节省时间回家看电影或者花更多的时间和家人在一起呢?感谢这里好人的帮助。但你真可耻,你只懂讽刺。以下是最终有效的方法:

            randGen = new Random();
            population = new int[inipopulationsize][25];

            for ( int i = 0; i < population.length; i++){

                    for (int j = 0; j < population[i].length; j++){
                        double randNum = randGen.nextDouble();
                        ranP = 0.5;
                        if (i < 11){
                        //System.out.println(matrix[i][j] + " ");
                        }

                        if (randNum <= ranP){
                            population[i][j] = 1;
                        }
                        else
                            population[i][j] = 0;
                    //System.out.println("population index: " + i + " Dieasease index: " + j + " DI on (1) or off (0): " + population[i][j] + "");

                    }//j loop


            }//i loop

我不认为有理由使用3个循环和一个2d数组

Random randGen = new Random(); 
double randNum;
for(int i=0; i<population.length; i++){
    for(int j=0; j<population[i].length; j++){
        randNum = ranGen.nextDouble();
        if(randNum<0.5) population[i][j] = 0;
        else population[i][j] = 1.0;
    }//j loop
}//i loop

第三个循环是因为需要二维数组吗?如果是这样,您可能应该查看二维数组的ArrayList

        int inipopulationsize = 25;
        double[][] population;
        Random randGen = new Random();
        double randNum = randGen.nextDouble();
        double ranP = 0.5;// outside loops
        population = new double[inipopulationsize][25]; // out


            for (int k = 0; k < inipopulationsize; k++){
                for (int j = 0; j < 25; j++){

                    randNum = randGen.nextDouble();//i assume you want new random every time

                    if (randNum <= ranP){
                        population[k][j] = 1;
                    }
                    else
                        population[k][j] = 0;
                }//j loop
            }//k loop
System.out.println(Arrays.deepToString(population));

您的问题是引用的项目超出了2D数组的边界

让我们看看你的代码。这条线:人口=新的双[k][j];声明大小为kxj的新二维数组。那么在这行中:人口[k][j]=randNum;尝试引用同一2D数组的第k列和第j行中的项。这在Java数组中是不合法的

Java数组是0索引的,这意味着对于大小为k的数组,索引的范围从0到k-1。索引k中没有项。这就是您收到索引越界错误的原因

出现arrayindexoutofboundsexception 0的确切错误是因为在第一次迭代时,您创建了大小为0×0的填充。然后尝试访问第0列和第0行中的项目,即第一个项目。但是,由于填充数组的大小为0,因此它没有空间,甚至索引0也超出了范围

然而,我甚至不确定这是你想要做的

在循环的每次迭代中都要声明一个2D数组。如果您要做的只是在PopulationSizeBy25中创建一个大小为的数组,这些是k和j的初始值,那么您需要在这两个嵌套循环之外声明它。也许甚至在第三个循环之外,因为我甚至不确定这个循环在做什么


在上循环了解如何有效地将0和1随机分配给人口数组。randP设置为0.5时,每个变量都有50%的机会出现。

您必须阅读并更新代码,以显示您是如何实例化变量population and matrixIt的。现在还不清楚您想在这里做什么。请编辑您的问题,以清楚地解释您的最终目标是什么。它是一个随机分布的1和0的2D数组,还是这样的数组的矩阵?这有点难说。