Salve, ho corretto un poco l'esercizio, ed alla fine mi funziona:
import java.util.*;
public class NumCas {
private static int[][] mat=new int[3][4];
public static void ins() {
List <Integer>lis = new ArrayList();
Integer a;
for (int i = 0; i < 30; i++) {
lis.add(i, (a = (i + 1)));
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if(i==0) {
int indiceCor = (int) (Math.random() * (30-1));
mat[i][j]=(int)(lis.remove(indiceCor));
}
if(i==1) {
int indiceCor = (int) (Math.random() * (26-1));
mat[i][j]=(int)(lis.remove(indiceCor));
}
if(i==2) {
int indiceCor = (int) (Math.random() * (22-1));
mat[i][j]=(int)(lis.remove(indiceCor));
}
}
}
}
public static void stampa() {
for(int i=0; i<3; i++) {
for(int j=0; j<4; j++) {
System.out.print(mat[i][j]+" ");
}
System.out.print("\n");
}
}
}
Però quando eseguo il programma un paio di volte, almeno una volta mi compare il seguente errore:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 27 out of bounds for length 27
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:359)
at java.base/java.util.ArrayList.remove(ArrayList.java:504)
at EsempioEsame7/pkg1.NumCas.ins(NumCas.java:22)
at EsempioEsame7/pkg1.ProgNumCas.main(ProgNumCas.java:9)
con Index e length diverisi ogni volta.