Problema com break no loop

13 respostas
henry.everton

Entao… o problema que tenho aqui é meio bestinha mas vai ajudar um bucado.
Seguinte, estou fazendo esta rotinazinha aqui pro jogo da velha. Vou colocar pra retornar se há um vencedor ou nao, ai vem o problema.

Como posso fazer para o loop parar de executar, pq ex.:
vencedor = true = ele tinha q parar o loop, fiz um teste aqui mas nao consegui fazer… alguem tem como me dar uma dica ai?

tipo nao sei se existe algo como break loop;srsrsssr

for(int cont=1; cont<10; cont++){ if(cont%2 == ini){ jogo.setPosicao(jogadores.getJogador1(),jogadores.getIden1()); } else{ jogo.setPosicao(jogadores.getJogador2(),jogadores.getIden2()); } }

13 Respostas

Guilherme_Gomes

Usa break:

for(int i=0;i&lt10;i++)
    	 {
    		 if(i&gt5)
    			 break;
    		 System.out.println(i);
    	 }
henry.everton

entao eu fiz desta forma aqui, mas nao funcionou nao.

for(int cont=1; cont<10; cont++){ if(cont%2 == ini){ jogo.setPosicao(jogadores.getJogador1(),jogadores.getIden1()); if(jogo.getVencedor()==true){ break; } } else{ jogo.setPosicao(jogadores.getJogador2(),jogadores.getIden2()); if(jogo.getVencedor()==true){ break; } } }

Guilherme_Gomes

O código aparenta estar correto! Tenta imprimir na tela o resultado de getVencedor, veja se está retornando true!

Se nada mais funcionar, faça assim:

cont=10;

assim, ele pára o loop tbm ^^
Chama-se POG --&gt Programação Orientada a Gambiarras:

http://desciclo.pedia.ws/wiki/POG

diego2005

Faça assim:

if(jogo.getVencedor()==true){ System.out.println("Vencedor..."); break; }

Só pra saber se está entrando na sua condição, pois como o Guilherme falou, o código aparenta está correto.

Caso não entre na condição acima, o problema deve ser no método getVencedor().

T+

luistiagos

uma solução bem POGramatica seria:

if(jogo.getVencedor()==true){

System.out.println(Vencedor…”);

count = 10;

}

outra mais POGramatica ainda seria:

for(int cont=1; cont<10 && cont>0; cont++){

if(cont%2 == ini){

jogo.setPosicao(jogadores.getJogador1(),jogadores.getIden1());

if(jogo.getVencedor()==true){

cont = 0;

}

}

else{

jogo.setPosicao(jogadores.getJogador2(),jogadores.getIden2());

if(jogo.getVencedor()==true){

cont = 0;

}

}

}
luistiagos

outra mais POGramaticamente mais POG ainda....

try{

for(int cont=1; cont<10; cont++){
 		if(cont%2 == ini){
 			jogo.setPosicao(jogadores.getJogador1(),jogadores.getIden1());
 if(jogo.getVencedor()==true){
   int x = 0;
   int y = 2;
   int z = y/x;
 }
 			}
 		else{
 			jogo.setPosicao(jogadores.getJogador2(),jogadores.getIden2());
 if(jogo.getVencedor()==true){
   int x = 0;
   int y = 2;
   int z = y/x;
 }
 
 }catch(AritimeticException e){
    System.out.println("Vencedor");
 }
			}
}
LPJava

assim:

for(int cont=1; cont<10; cont++){
if(vencedor == true)
break;
}

obs.: eu faria assim levando em conta que vencedor é do tipo boolean… o break faz a instrução for parar de executar… e dar continuidade na linha apos o for. :d

henry.everton

po entao o get nao esta errado nao… eu fiz assim

declarei:

private boolean vencedor = false;

metodo:

public boolean getVencedor(){
	return(this.vencedor);
	}

eu fiz com o break e nao fununciou acho q vou ter de usar o POG…srsrsrsr

luistiagos

tem ctza que esta indo no seu if que contem o break?
coloca um System.out.println() ou debuga pra ver se passa la…

A

Cara, debuga o seu programa e coloca um break point na linha do if. E veja qual é o valor que seu get está recebendo. è provavel que vc não esteja retornando true. Qq coisa postar… abraços

diego2005

Você fez o que falei???

Por que o break funciona perfeitamente, faz o teste ai:

for(int i = 0; i < 10; i++) { if(i == 6) { break; } System.out.println("i = " + i); } System.out.println("Fora do loop");

A saída desse trecho de código será:

i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 Fora do loop

Note que quando o i é igual a 6 (if(i == 6)), o loop é enderrado e a execução vai pra primeira linha depois do loop(System.out.println(“Fora do loop”);)…

T+

Guilherme_Gomes

henry.everton:
po entao o get nao esta errado nao… eu fiz assim

declarei:

private boolean vencedor = false;

metodo:

public boolean getVencedor(){
	return(this.vencedor);
	}

eu fiz com o break e nao fununciou acho q vou ter de usar o POG…srsrsrsr

??? E onde voce seta “vencedor=true” ???

henry.everton

cara ja fiz de tudo aqui … q raiva… coloquei o system pra imprimir mas puts… nem imprime o getVencedor… vou dar mais uma olhada aqui qualquer coisa eu grito denovo fazer o q!!!

mas de qualquer forma valeu pra todos

Criado 27 de julho de 2007
Ultima resposta 27 de jul. de 2007
Respostas 13
Participantes 6