我正在尝试通过一个二维数组生成一个数独棋盘: board5。数独棋盘应该只包含唯一的元音。但是,我只使唯一的元音出现在一行中。对于列,它们似乎仍然有重复项。使用到目前为止的代码,我应该如何生成没有重复的列?
下面是我用来在一行中生成唯一字母的代码:
String [] vowels = {"A","E","I","O","U"};
String [][] board = new String [vowels.length][5];
public Actions(){
int rows = 5;
for(int row = 0;row<rows;row++){
ArrayList<String> tempVowels = new ArrayList<String>(Arrays.asList(vowels));
int numVowPerLine = (int)Math.floor(Math.random()*4);
for(int j = 0;j<numVowPerLine;j++){
do{
int pos = (int)Math.floor(Math.random()*5);
if(board[row][pos] == null){
int temp = (int)Math.floor(Math.random()*tempVowels.size());
board[row][pos] = tempVowels.get(temp);
tempVowels.remove(temp);
break;
}
}while(true);
}
}致谢对象: L7ColWinters
发布于 2012-04-04 16:59:44
如果第一列/第一行的内容是A,而您位于第一列/第二行,则可以使用截断数组(即String [] availableVowels = {"E","I","O","U"}; )进行选择。如果你选择O,那么当你在第一列/第三行时,你应该选择from String [] availableVowels = {"E","I","U"};。等。
https://stackoverflow.com/questions/10007872
复制相似问题