这是我当前的随机2D数组,我需要让每个数组打印在参数中没有重复值。我已经尝试了其他帖子,但它们都没有涵盖多维数组,特别是Math.random。
甚至可以用我安排这个数组值表的方式吗?稍后我将需要能够测试它们以供用户输入。 谢谢你的时间。
public static void main(String[] args) {
System.out.println("B I N G O");
int[][] board = new int[5][5];
for(int i = 0; i < board.length; i++){
for(int j =0; j <board.length; j++){
board[0][j] = (int)(Math.random() *15) +1;
board[1][j] = (int)(Math.random() *15) +16;
board[2][j] = (int)(Math.random() *15) +31;
board[2][2] = 0;
board[3][j] = (int)(Math.random() *15) +46;
board[4][j] = (int)(Math.random() *15) +61;
System.out.printf("%-3s", board[j][i]);
}
System.out.println("");
}
}
}
答案 0 :(得分:0)
您可能会达到预期的效果。
答案 1 :(得分:0)
尝试使用ArrayList保留所有使用过的整数。
import java.util.ArrayList;
import java.util.Random;
public class Solution {
static ArrayList<Integer> random=new ArrayList<Integer>();
private static Random r = new Random();
public static void main(String[] args) {
System.out.println("B I N G O");
int[][] board = new int[5][5];
for(int i = 0; i < board.length; i++){
for(int j =0; j <board.length; j++){
if(j==0)
board[i][j] = getUniqueRandom(15, 1);
else if(j==1)
board[i][j] = getUniqueRandom(30, 16);
else if(j==2)
board[i][j] = getUniqueRandom(45, 31);
else if(j==3)
board[i][j] = getUniqueRandom(60, 46);
else if(j==4)
board[i][j] = getUniqueRandom(75, 61);
if(i==board.length/2 && j==board.length/2) board[i][j] = 0;
System.out.printf("%-3s", board[i][j]);
}
System.out.println("");
}
}
static int getUniqueRandom(int max, int min){
int num = r.nextInt(max-min+1) + min;
while (random.contains(num)) {
num = r.nextInt(max-min+1) + min;
}
random.add(num);
return num;
}
}