AJUDA! - Não me lembro o nome desse tipo de função

Ola, pessoal.

Cá estou eu brincando um pouco com o java, e não me sei se o java tem isso ou como ele feito.

A algum tempo atrás eu estava lendo um material, e falava como dar nova a uma função sua. Nem me lembro como.

Fiz alguns teste e vi que se eu ficar uma if, while ou for mesmo e colocar um

teste: for(int x =0; x < tanto; x++){ }

não da erro. Mas não sei se isso é correto. E também não me recordo o nome dessa técnica.

Se algum souber e entender o que eu estou falando. Vou ficar muito agradecido pela resposta.

Muito Obrigado a todos.

att

Romildo Jozué Paiter

Não endendi muito, mais o for é usado para percorer algo, por exemplo um array, Vector, ArrayList
o if é usado para caso, ou seja:

if(1 &lt; 2) // se 1 for menor que 2 executa a ação abaixo

o while é enquanto :

int count = 0;
while(count &lt; 2){ // enquanto cont for menor que 2 executa as ações abaixo
// operações
count++; // o incremento é feito manualmente
}

Não sei se era isso, por exemplo, quer ver se o array tem um elemento igual ao outro array:

public int achaIgual(int[] a, int[] b){ // dois arrays de mesmo tamanho
int count = 0;
while(count &lt; a.length){
for(int i = 0; i &lt; a.length; i++){
if(a[count] == b[i])
return a[count]
}
count++;
}
return 0;
}

você está falando do “teste :”? Isso se chama gambi e nunca deve ser feito. Esqueça que isso existe.

Obrigado Senhores.

Se um dia eu encontrar o que era eu passo pro aqui e posto o que eu queria fazer.

Muito Obrigado a todos, e um Otima Semana.

att

Romildo Paiter

Ola amigo,

Esse recurso é permitido. O "teste: " é uma tag e é util quando voce tem for e/ou while aninhados, por exemplo.

Serve para voce utilizar como ponto de retorno quando for fazer algum “break” nos loops.
Nao me lembro a sintaxe pois nunca usei na pratica, mas vi isso no livro da Kathy sierra qdo estava estudando pro SCJP.

Voce pode, por exemplo, fazer ao inves de break, para parar seu for, fazer um break teste, indicando o ponto que o codigo vai continuar a execucao depois do break.

Da uma olhada no livrpo da Kathy.

ABraço!
galileu

Os Labeled loops em Java não são muito utilizados. Mas, ao contrário do que foi dito atrás, não é gambiarra e devem ser usados quando precisos.

Exemplo: Se eu tiver uma matriz e estiver à procura de um elemento dentro dessa matriz, eu vou percorrer as linhas e as colunas da matriz e vou querer parar os dois ciclos quando encontrar.

linhas: for(int i=0;i < 10; i++){ for (int j = 0; j < 10; j++){ if(matriz[i][j] == 7) { //faz qq coisa (...) break linhas; //termina os dois for, não quero procurar mais na matriz } } }

Ola pmlm.

Obrigado. É isso mesmo que eu estava querendo. não estava me lembrando da sintaxe de parada eu esta tentando.

linhas.break, sendo que era um pouco mais simples que isso.

Muito obrigado pela resposta positiva e de me lembrar como implementar os Labeled, acho que isso pode ajudar muita gente.

att

Romildo Paiter

Isso é herança de linguagens como o C, que tem "label"s e "goto"s. Embora sejam úteis, podem complicar o seu código bastante, e por isso as linguagens mais novas tentam abolir essa idéia de “jump incondicional”.

Na boa: não use a menos que seja extritamente necessário, o que geralmente não é. Para você, pode ficar claro o que o trecho de código faz, mas para quem for manter o código isso pode se tornar um incomodo. Keep it Simple :slight_smile:

Isto não são jumps incondicionais, é simplesmente a quebra de um loop.

Qual será mais simples?

linhas: for(int i=0;i < 10; i++){ for (int j = 0; j < 10; j++){ if(matriz[i][j] == 7) { //faz qq coisa (...) break linhas; //termina os dois for, não quero procurar mais na matriz } } }

boolean quebra = false; for(int i=0;i < 10; i++){ for (int j = 0; j < 10; j++){ if(matriz[i][j] == 7) { //faz qq coisa (...) quebra = true; break; } } if (quebra){ break; } }

pmlm, eu tentaria separar em um método, e usaria “return” onde você colocou “break linhas;”. Acredito que se isso for possível, deixaria o código mais claro.

Quanto aos “jumps incondicionais”, ainda acho q o são. Essa artimanha pode ser feita no C com goto para um label fora do laço, e trocar de "goto " para "break " para mim é a mesma coisa. Mas isso é irrelevante. Não vamos discutir por causa disso. Eu sei que o break é mais restrito, etc, etc, etc.

[[]]'s