Checagem com For

Olá,

Preciso criar um método que vai percorrendo células procurando um determinado valor (6), se não encontrar esse valor eu quero que ele retorne true e se encontrar eu quero que retorne false.

Método:


public boolean verifyFinish() {
    boolean finish = false;
        if (turn.equals(Turn.White)){
	for (int x = 0; x < 8; x++){
	    for (int y = 0; y < 8; y++){
	    	int king = 0;					king = pecas.getCell(x, y);				System.err.println(x+","+y+"="+king);			if (king != 6){
		    finish = true;
	                }
	    }
                }
        }
        return finish;
}

Alguém pode me ajudar?

Obrigado.

Olá,

Supondo que você vá percorrer um array, procurando pelo valor 6, você poderia fazer:


public boolean procuraValor( int[]  lista, int valor )
{
   for( int i = 0; i < lista.length; i++ )
   {
       if( lista[i] == 6 )
       {
           return true;
       }
   }
   return false;
}    

[]´s
Tatiana

Poderia ser assim, pois não chega nada a esse método.
Você acha q funciona?

public boolean verifyFinish() {
boolean finish = false;
if (turn.equals(Turn.White)){
int [] x = new int[8];
for (int i = 0; i < x.length; x++){
int [] y = new int[8];
for (int j = 0; j < y.length; j++){
int king = 0; king = pecas.getCell(x[i], y[j]); if (king != 6){
finish = true;
}
}
}
}
return finish;
}

Acho que você está com um certo problema de lógica no seu código.
Perceba que você está tentando pegar os valores de uma tabela (acho eu), só que em lugar algum está definindo as células dessa tabela.

Você está usando para isso as variáveis x e y, que são criadas DENTRO do loop, portanto, contendo ZEROS. A menos que a célula na coordenada 0,0 tenha o valor 6, o método SEMPRE retornará false.

De que tipo é o seu objeto pecas?

É o seguinte:

O king carrega esses valores:

0,0 = 1
0,1 = 2
0,2 = 1
.
.
.
7,7 = 5

Um desses pares pode conter o 6, se conter eu quero que retorne false, senão conter eu quero true.

Se acha que funciona?

Vinicius

Como você não disse o que exatamente é o seu objeto pecas, vou chutar um método que TALVEZ funcione…

public boolean verifyFinish() {
    if (turn.equals(Turn.White)){
        for (int i = 0; i < 8; i ++) {
            for (int j = 0; j < 8; j ++) {
                if (pecas.getCell(i, j) == 6) {
                    return false;
                }
            }
        }
    }
    return true;
}

O método não está de todo correto, já que estou assumindo que o seu objeto pecas sempre será 8x8. O ideal seria pegar o total do próprio objeto.