Boa tarde, senhores.
Estou com uma dúvida aqui, preocupado com desempenho e entendimento de código.
Tenho uma matriz de três dimensões do tipo 10x10x10 Preciso percorre-la até encontrar um determinado valor, depois disso anoto em que posição se encontrava e paro a varredura. Como tenho três laços, um dentro do outro, pois estou varrendo uma matriz a solução não fica nada elegante, pois um break não pararia todos os laços, apenas o último, o mais interno neste caso. A melhor opção seria usar condições, se ainda não encontrou o arquivo, continuar a procura logo após cada for. Por exemplo.
//Matriz preenchida com 1(uns)
matrix3D[8][8][9] = 0;
int posicaok = 0;
for (int i = 0; i < 10; i++){
if (posicaok != 0){
break;
}
for (int j = 0; j < 10; j++){
if (posicaok != 0){
break;
}
for (int k = 0; k < 10; k++){
if (matrix3D[i][j][k] == 0){
System.out.println("posicao: " + i + j + k);
posicaok = k;
break;
}
}
}
}
Nada elegante, dai pensei em usar while:
//Parando
posicaok = 0;
int i = 0,
j = 0,
k = 0;
do{
if (k == 9) {
j++;
k = -1;
}
if (j == 10) {
i++;
j = 0;
}
k++;
}while((i < 10) && (matrix3D[i][j][k] != 0));
posicaok = k;
System.out.println("posicaok = " + posicaok);
Preciso ainda testar qual das duas tem o melhor desempenho, acredito que a segunda, porém o código não está muito legível. Gostaria da opinião de vocês quanto aos métodos e se alguém teria uma melhor sugestão. Não testei a fundo ambos os métodos, então talvez tenha problemas de implementação. Só os fiz para ilustrar melhor meu problema.
Abraços.
Jorge