Faça um programa que escolha, aleatoriamente, 10 posições de uma matriz 10 x 10 de caracteres, e marque cada uma dessas posições com * (asterisco). Crie, em seguida, uma matriz de inteiros de 10 x 10 que contenha, para cada posição [i,j], o número de bombas na vizinhança. Imprima, por fim, essa matriz na tela. Cada posição tem no máximo 8 vizinhos (as diagonais contam).
Fiz o programa, porem foi utilizando o comando try. Alguem sabe uma forma de resolver so usando for e if ?
[code]import java.util.Scanner;
public class Ex {
public static void main(String[] args) {
char[][] bomba = new char[10][10];
int[][] campo = new int[10][10];
for (int i = 0; i < bomba.length; i++) { // coloca - em todas posições
// da matriz
for (int j = 0; j < bomba[i].length; j++) {
bomba[i][j] = ‘0’;
}
}
for (int i = 0; i < 10; i++) { // gera um número aleatório entre 0 e 10
int linha = (int) (Math.random() * 9);
int coluna = (int) (Math.random() * 9);
bomba[linha][coluna] = ‘x’;
}
for (int i = 0; i < bomba.length; i++) { // imprime a matriz com as
// bombas
for (int j = 0; j < bomba[i].length; j++) {
System.out.print(bomba[i][j] + " ");
}
System.out.println();
}
// obtem a qtd de bombas proximo aos campos
for (int i = 0; i < bomba.length; i++) {
for (int j = 0; j < bomba[i].length; j++) {
if (bomba[i][j] != ‘x’){ // se nao for bomba…
continue;
}
// incrementando os valores dos campos proximos da bomba
for (int a = i - 1; a <= i + 1; a++) {
for (int b = j - 1; b <= j + 1; b++) {
try { // tratamento de excecao pois, pode ultrapassar o
// array...
if (bomba[a][b] == 'x') {
continue;
}
campo[a][b]++;
} catch (Exception e) {
}
}
}
}
}
System.out.println();
// exibe o resultado
for (int i = 0; i < campo.length; i++) { // imprime a matriz dos campos
for (int j = 0; j < campo[i].length; j++) {
System.err.print(campo[i][j] + " ");
}
System.err.println();
}
}
}[/code]