Hello! I want to generate a java random number in 7x7 array without repeat?
Please help!!!
Below are my codes, can't work, please help!!
Please help!!!
Below are my codes, can't work, please help!!
import java.applet.*;
import java.awt.*;
public class randomGen extends Applet implements Runnable {
protected int model[][];
protected Button view[][];
protected void createModel() {
model = new int[7][7];
for (int row = 0; row < 7; row++)
for (int col = 0; col < 7; col++)
model[row][col] = 0;
model[0][0] = 1;
model[1][0] = 3;
model[2][1] = 2;
model[3][4] = 6;
model[4][6] = 7;
model[5][1] = 5;
model[6][6] = 4;
}
protected void createView() {
setLayout(new GridLayout(7, 7));
view = new Button[7][7];
for (int row = 0; row < 7; row++)
for (int col = 0; col < 7; col++) {
view[row][col] = new Button();
add(view[row][col]);
}
}
protected void updateView() {
for (int row = 0; row < 7; row++)
for (int col = 0; col < 7; col++)
if (model[row][col] != 0)
view[row][col].setLabel(String.valueOf(model[row][col]));
else
view[row][col].setLabel("");
}
public void init() {
createModel();
createView();
updateView();
}
protected boolean checkRow(int row, int num) {
for (int col = 0; col < 7; col++)
if (model[row][col] == num)
return false;
return true;
}
protected boolean checkCol(int col, int num) {
for (int row = 0; row < 7; row++)
if (model[row][col] == num)
return false;
return true;
}
protected boolean checkBox(int row, int col, int num) {
row = (row / 3) * 3;
col = (col / 3) * 3;
for (int r = 0; r < 3; r++)
for (int c = 0; c < 3; c++)
if (model[row + r][col + c] == num)
return false;
return true;
}
public void start() {
(new Thread(this)).start();
}
public void run() {
try {
Thread.sleep(1000);
solve(0, 0);
} catch (Exception e) {
}
}
public void solve(int row, int col) throws Exception {
if (row > 6)
throw new Exception("Solution found");
if (model[row][col] != 0)
next(row, col);
else {
for (int num = 1; num < 8; num++) {
if (checkRow(row, num) && checkCol(col, num)
&& checkBox(row, col, num)) {
model[row][col] = num;
updateView();
Thread.sleep(1000);
next(row, col);
}
}
model[row][col] = 0;
updateView();
}
}
public void next(int row, int col) throws Exception {
if (col < 6)
solve(row, col + 1);
else
solve(row + 1, 0);
}
}