Complementando as dicas do edwlipe, este laço não vai chegar a repetir porque o return é executado tanto se a avaliação do seu if der verdadeiro ou falso.
public boolean guardaBloco() {
for (int i = ISala.X_INICIO_ARM; i <= ISala.X_FIM_ARM; i++) {
for (int j = ISala.Y_INICIO_ARM; i <= ISala.Y_FIM_ARM; j++) {
if (Sala.sala[i][j] == ISala.POSICAO_VAZIA) { //Se a condição for verdadeira
Sala.sala[i][j] = ISala.BLOCO_PRESENTE;
return true; //retorna true encerrando o método
break; //este break nunca será executado
} //Se a condição não for verdadeira
return false; //retorna false encerrando o método
} //A execução não chegará até este ponto para que o laço possa repetir
}
}
Bom dia!
Concordo que o break não irá executar, mas eu preciso de um código que faça o seguinte: percorrer todo o arranjo e se encontrar alguma espaço vazio faça tal coisa e pare, return true, senão achar nada return false.
Ou seja se achar 1 espaço vazio ele não procura outro e para.
Fiz desse jeito, abaixo, mas tb não estou nada satisfeita queria algo mais simples, podem me ajudar?
Obrigada!
public boolean guardaBloco() {
int var = 0;
desvio:
for (int i = ISala.X_INICIO_ARM; i <= ISala.X_FIM_ARM; i++) {
for (int j = ISala.Y_INICIO_ARM; j <= ISala.Y_FIM_ARM; j++) {
if (Sala.sala[i][j] == ISala.POSICAO_VAZIA) {
Sala.sala[i][j] = ISala.BLOCO_PRESENTE;
Mensageiro.mensagem(Mensageiro.ARMAZENAGEM, i, j);
var++;
return true;
}
if (var == 1) {
break desvio;
}
}
}
return false;
}
ViniGodoy
O return já vai sair da função, o break não é necessário.
Outra coisa. Use boolean quando quiser uma variável sim/não, e não um int:
public boolean guardaBloco() {
for (int i = ISala.X_INICIO_ARM; i <= ISala.X_FIM_ARM; i++) {
for (int j = ISala.Y_INICIO_ARM; j <= ISala.Y_FIM_ARM; j++) {
if (Sala.sala[i][j] == ISala.POSICAO_VAZIA) {
Sala.sala[i][j] = ISala.BLOCO_PRESENTE;
Mensageiro.mensagem(Mensageiro.ARMAZENAGEM, i, j);
return true;
}
}
}
return false;
}