String[] dizi_paragraf = dosya.split("\n");
for (int i = 0; i < dizi_paragraf.length; i++) {
String[] dizi_cumle = dizi_paragraf[i].split("\\.");
String[][] dizi_total = new String[dizi_paragraf.length][dizi_cumle.length];
int[][] dizi = new int[dizi_paragraf.length][dizi_cumle.length];
for (int j = 0; j < dizi_cumle.length; j++) {
dizi_total[i][j] = dizi_cumle[j];
dizi[i][j] = j;
System.out.println(dizi[i][j]);
}
}
输出:
0-0
0-1
1-0
1-1
1-2
2-0
3-0
3-1
4-0
4-1
5-0
5-1
5-2
5-3
我想要这个:
0-1
0-0
1-1
1-0
1-2
2-0
3-1
3-0
4-0
4-1
5-3
5-1
5-0
5-2
这是一个例子。 每个i的j值随机变化,但直到j个长度为止。 我怎样才能做到这一点?你有什么想法吗? 例如,对于索引0应该产生0或1。对于第一个索引应该产生0.1或2。 2.对于indis,您应该只取0。等等 只是个例子。这可以改变。我动态地考虑了这一点。
“ i”必须恒定。但是j应该随机选择。对于指数0,j值:0和1。应随机选择。对于指数1,j值:0和1。应随机选择。
答案 0 :(得分:0)
尝试以下操作:
String dosya = "Test cumle 1. CUmle 2.\nCumle 3 here. Next sentences. Last sentences.";
String[] dizi_paragraf = dosya.split("\n");
for (int i = 0; i < dizi_paragraf.length; i++) {
String[] dizi_cumle = dizi_paragraf[i].split("\\.");
String[][] dizi_total = new String[dizi_paragraf.length][dizi_cumle.length];
int[][] dizi = new int[dizi_paragraf.length][dizi_cumle.length];
List<Integer> jj = new ArrayList<>();
for (int j = 0; j < dizi_cumle.length; j++) {
jj.add(j);
}
Collections.shuffle(jj);
for (int j:jj) {
dizi_total[i][j] = dizi_cumle[j];
dizi[i][j] = j;
System.out.println("dizi[i][j] "+i+"-"+j);
}
}
答案 1 :(得分:0)
以下解决方案不使用Collection.shuffle,而仅使用Random生成器和数组。
String[] dizi_paragraf = dosya.split("\n");
Random r = new Random();
for (int i = 0; i < dizi_paragraf.length; i++) {
String[] dizi_cumle = dizi_paragraf[i].split("\\.");
String[][] dizi_total = new String[dizi_paragraf.length][dizi_cumle.length];
int[][] dizi = new int[dizi_paragraf.length][dizi_cumle.length];
for (int j = 0; j < dizi_cumle.length; j++) {
int rNumber = 0;
boolean unique=false;
while (!unique){
unique=true;
rNumber = r.nextInt(dizi_cumle.length);
for (int jj = 0; jj < j; jj++) {
if (dizi[i][jj] == rNumber) {
unique = false;
break;
}
}
}
dizi_total[i][j] = dizi_cumle[j];
dizi[i][j] = rNumber;
System.out.println(i + "-" + dizi[i][j]);
}
}
对于每个j,while循环均以unique = false开始。它获得一个随机数r.nextInt(dizi_cumle.length)
并将唯一性设置为true。然后,它对第二维j上的dizi [] []数组执行一个for循环,直到找到先前设置的数字为止。如果for循环在没有输入if (dizi[i][jj] == rNumber)
的情况下结束,则唯一值永远不会设置为false,而while将退出。最后将数字设置到数组中。