[Duvida] Bloco de Código

14 respostas
W

Alguém pode esclarecer esse recurso da linguagem e como funciona:

[code]
public void teste(){

qualquerCoisa:
System.out.println("Qualquer coisa");

}

Seria um bloco de codigo como o nome qualquerCoisa?
É possível fazer alguma coisa parecida como caso acontece X retorne no bloco qualquerCoisa?

Obrigado!!

Att,
Wanderson Carvalho.

14 Respostas

welitonjose

wanderson.si:
Alguém pode esclarecer esse recurso da linguagem e como funciona:

public void teste(){

qualquerCoisa:
System.out.println(“Qualquer coisa”);

}

Seria um bloco de codigo como o nome qualquerCoisa?
É possível fazer alguma coisa parecida como caso acontece X retorne no bloco qualquerCoisa?

Obrigado!!

Att,

Wanderson Carvalho.

seria mais ou menos isso ???

public void main teste{

// declara a variaveis 
String qualquerCoisa=" sei lah";

System.out.println(qualquerCoisa);

impreme sei lah

vlw

welitonjose

seria isso ou eu dei uma viajada???

wanderson explique melho por favor???

Carlos_ds_jar

interessante

Adelar

Olá,
acho que você está falando dos "gotos" do java, certo? Segue um código somente ilustrativo de como funciona a idéia:

public class Test2 {

	/**
	 * Retorna um número de acordo com a sequencia:
	 * se num é menor que zero, num=0;
	 * senão num=num+1;
	 *
	 * num=num*2;
	 * @param num
	 * @return
	 */
	public int getNumber(int num)
	{
		validacao:
		{
			if(num<0){
				num=0;
				break validacao;
			}
			if(num==0){
				num=1;
				break validacao;
			}
			if(num==1){
				num=2;
				break validacao;
			}
			if(num==2){
				num=3;
				break validacao;
			}
			// um monte de outras validacoes
		}

		// um processamento qualquer
		num=num*2;

		return num;
	}

	public Test2(){
		System.out.println(getNumber(-1));
		System.out.println(getNumber(0));
		System.out.println(getNumber(1));
		System.out.println(getNumber(2));
	}

    public static void main(String[] _args)
    {
        new Test2();
    }

}

Note que quando faço um break o bloco é quebrado da mesma forma que ocorre quando usado o break em um laço (for, while ou do).

Att.

G

OPa, blz?

então esses blocos de código funcionam sim!

você pode usá-lo da seguinte maneira:
int bingo = 3;
		
		qualquerCoisa:
			for (int i = 0; i < 5; i++) {
				//System.out.println("i="+i);
				for (int j = 0; j <i; j++) {
					//System.out.println("j="+j);
					if(j == bingo){
						break qualquerCoisa;
					}
				}
			}
Adelar
gervas-IO:
OPa, blz?

então esses blocos de código funcionam sim!

você pode usá-lo da seguinte maneira:
int bingo = 3;
		
		qualquerCoisa:
			for (int i = 0; i < 5; i++) {
				//System.out.println("i="+i);
				for (int j = 0; j <i; j++) {
					//System.out.println("j="+j);
					if(j == bingo){
						break qualquerCoisa;
					}
				}
			}

Se bem usado, como no exemplo acima, pode economizar um monte em processamento :D

welitonjose

nao entendi ???

pq o qualquerCoisa tah isolado???

qualquerCoisa:

e depois retorna ele ???

viajei agora???

G

nao entendi ???

pq o qualquerCoisa tah isolado???

Opa, então na verdade essa é uma conveniência do código, eu tb prefiro assim:

qualquerCoisa: { for (int i = 0; i < 5; i++) { // System.out.println("i="+i); for (int j = 0; j < i; j++) { // System.out.println("j="+j); if (j == bingo) { break qualquerCoisa; } } } }

você pode usar “{}” para agrupar o código, isso funciona do mesmo mode que

if (true) System.out.println("java");

e

if (true) { System.out.println("java"); }

Não é necessário usar “{}”, eu particularmarte não gosto, mas já vi bastante essa prática…

Por exemplo, aquele primeiro código pode ser declarado sem o uso de “{}”. Observe:

qualquerCoisa: for (int i = 0; i < 5; i++) for (int j = 0; j < i; j++) if (j == bingo) break qualquerCoisa;

Então, mas isso só funciona quando você tem apenas uma instrução para o bloco!:

“qualquerCoisa” tem 1a instrução "for (int i = 0; i < 5; i++) " que por sua vez tem uma instrução "for (int j = 0; j < i; j++) " que também tem apenas uma instrução “if (j == bingo)” que finalmente tb tem apenas uma instrução “break qualquerCoisa;[/code]”

Abs.

welitonjose

OPA

OBRIGADO AGORA SIM RS

VLW

W

Muito obrigado pela explicações…
Mais tenho mais uma pergunta…
Posso utilizar mais algum comando além do break?

Mais uma vez obrigado!

Att,
Wanderson Carvalho.

gergon

Olha tem este tipode instrucao

int valor = 4;

    switch(valor){
      case 1:
        System.out.println("Valor é 1"); 
        break;
      case 2:
        System.out.println("Valor é 2"); 
        break;
      case 3:
        System.out.println("Valor é 3"); 
        break;
      default://caso seja diferente de 1, 2 ou 3 
        System.out.println("Valor diferente de 1, 2 e 3"); 
        break;
    }
gergon

E alem do break tem o continue que de vez sair da instrucao ignora ela

R

Qual a vantagem desse estilo?
Legibilidade?

G

Qual a vantagem desse estilo?
Legibilidade?

Creio que sim, o código fica mais enxuto, com menos linhas.

Porém em alguns casos pode confundir mais do que ajudar… Analise o código abaixo:

if(true);
		{
			System.out.println("saída");
		}

Qual seria a resposta impressa na tela? :slight_smile:

Abs.

Criado 24 de julho de 2010
Ultima resposta 26 de jul. de 2010
Respostas 14
Participantes 7