Dúvida cruelllll

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]

Acho que é isso ae:

package br.com.ivo;

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
				forDoA:
				for (int a = i - 1; a <= i + 1; a++) {
					for (int b = j - 1; b <= j + 1; b++) {
						if(a < 0) a = 0;
						else if(a > bomba.length-1) break forDoA;
						if(b < 0) b = 0;
						else if(b > bomba[0].length-1) break;
						
						if (bomba[a][b] == 'x')
							continue;
						campo[a][b]++;
					}
				}
			}
		}
		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();
		}
	}
}

Opa;

So não intendi este comando aqui;

break forDoA;

Valewww

chama-se label usado em for…ele faz um break e retorna para o lugar onde esta escrito no seu código forDoA

Uhummmm :idea:

Bacana demais isso.

Valew

[quote=rodrigoerocha]Uhummmm :idea:

Bacana demais isso.

Valew[/quote]

Recurso pouquíssimo usado em java…isso é o antigo “goto” do C. Evite usa-lo quando possível… :slight_smile:

Intendi…

Vc teria uma solução para não usar o comando ?

pô cara desculpe mas agora não posso ler seu código…em todo caso só evite de usar QUANDO for possível…valews…

[]'s

Valew :lol: