int matrice2 [][] = new int [5][5];
for (int i=0;i<5;i++) {
System.out.println(" ");
for(int j=0;j<5;j++) {
matrice2[i][j] = (int)(Math.random()*10);
System.out.print(" "+matrice2[i][j]+" ");
}
}
System.out.println(" ");
System.out.println(" ");
for (int i=0;i<5;i++) {
System.out.println(" ");
for(int j=0;j<5;j++) {
for (int k=0;k<5;k++) {
if(j!=k) {
if (matrice2[i][j]==matrice2[i][k]) {
matrice2[i][k]=(int)(Math.random()*10);
}
}
}
System.out.print(" "+matrice2[i][j]+" ");
}
}
我想制作一个多维数组,而在同一行中没有任何重复的数字,因此该列是否有重复的数字并不重要。
我在这里所做的是生成方形的 5x5 数组。将索引“j”作为与索引“k”中的数字进行比较的索引,如果存在与索引“j”中包含的数字相等的数字,则检查整行。所以我唯一的问题是,在检测到“k”中的数字等于“j”中的数字后,索引“k”中的数字将生成一个新数字来替换“k”中的当前数字,但结果在控制台显示原始 5x5 数组(在更改之前是数组的第一个形式)已更改,但已替换的数字生成的数字已经存在,即使它应该继续更改,直到“k”无法检测到任何重复的数字。
我可以想到其他方法,但我真的很想知道为什么它不起作用,尽管我真的认为它不应该带来任何问题,但我可能错过了一些东西。
这是不应该发生的结果示例。
从
9 1 3 8 4
5 3 2 4 8
9 8 5 6 5
6 3 0 8 7
2 8 6 3 9
到
9 1 3 8 4
5 3 2 4 8
9 8 5 6 9
6 3 0 8 7
2 8 6 3 9
它不应该发生,因为“k”应该从索引 0 开始到 4 看到它。
虽然“j”在索引 4 中,而“k”在索引 0 中,它应该立即检测到它并将“k”中的数字更改为其他随机数。
编辑:我看到你们展示的不同方式,但我要求的是在不使用任何导入的情况下提供更好的解决方案。我们的老师给了我们这个作业,告诉我们没有使用任何这些导入,这使得它变得更加复杂,但这正是我们所要求的。我尝试了一段时间,但仍然没有发生任何变化。
胡子哥哥
弑天下
当年话下
相关分类