我有两个二维数组,一个是填充的,一个是要填充的,两个都是相同的大小(n x m)。我需要用与第一个数组完全相同的值填充我的第二个数组的[some random]%。 所以,让我们说
int[][] arr1 = new int[][] {{0, 1, 0, 1},
{1, 0, 1, 0},
{0, 0, 1, 1},
{1, 1, 0, 0}};
我希望arr2在同一位置填充25%的arr1值,其他位置保持为空。
int[][] arr2 = new int[4][4];
// where arr2 = something like {{0,1,0,1},
// { , , , },
// { , , , },
// { , , , }}
最终,程序会调用用户填写缺失的值,我可以这样做,只是出于某种原因,这部分似乎不想为我工作。 这是一个学校作业,老师在回答问题方面不是很有帮助。
这是我的代码: 注意到(变量名称是法语..)
gui =第二个“数组”(它实际上是一个JBdton的二维数组,老师写了....ntntax来添加一个值:gui.setValeur(i,j,value))
int nbCases = grille.length * grille[0].length;
int nbARemplir = (int)(nbCases * nbPourc);
do{
for(int i = 0; i < grille.length; i++) {
for(int j = 0; j < grille[i].length; j++) {
if(rand.nextInt(2) == 1 && nbARemplir > 0) {
gui.setValeur(i, j, "" + grille[i][j]);
nbARemplir--;
}
}
}
} while(nbARemplir > 0);
感谢您的帮助! :)
答案 0 :(得分:0)
由于您随机选择设置值,您可能会多次遍历2D阵列(由于 while-loop )。因此,您可能会多次在同一个(i,j)索引处设置一个值,但您仍在递减 nbARemplir 。
现在,我不知道 gui 的类型,但您可以将if语句更改为
if(gui[i][j] != null && rand.nextInt(2) == 1 && nbARemplir > 0)...
这可以确保您不会两次放入相同的值/对象。