Cade a galera que posta duvidas de questoes SCJP 5?

7 respostas
CarlosEduardoDantas

poxa… faz tempo q nao vejo ng postar duvidas de questoes SCJP 5…

vamos usar esse topico para postar algumas questoes ou duvidas… certo?

:wink:

7 Respostas

LPJava

se vc fizer uma pesquisa aqui, tem tantas dicas… que se vacilar temos o exame quase 80% do exame no guj… o importante. para o exame é entender pq nao compila, pq lança exceção e pq o resultado é aquele… as questoes para cada exame é completamente diferente… e as pegadinhas tb… ler as dicas de quem passou… e quem perdeu . é o ideal :smiley:

CarlosEduardoDantas

eu sei… e ja li todas … :wink:

Giulliano

vamos lá…vou aproveitar q estou estudando e mandar uma pergunta…

int i, j=1;
	i = (j>1)?5:1;    
switch(i) {
       case 0: System.out.println(0); break;
       case 1: System.out.println(1);
       case 2: System.out.println(2); break;
       case 3: System.out.println(3); 
       default : System.out.println(4);
	      }

Esse código TEORICAMENTE imprimiria o valor 1

se alguém não concorda comigo pode dizer… E já aproveita para explicar …

obs.: ele vai imprimir 1, 3, 4.

CarlosEduardoDantas

Giulliano:
vamos lá…vou aproveitar q estou estudando e mandar uma pergunta…

int i, j=1;
	i = (j>1)?5:1;    
switch(i) {
       case 0: System.out.println(0); break;
       case 1: System.out.println(1);
       case 2: System.out.println(2); break;
       case 3: System.out.println(3); 
       default : System.out.println(4);
	      }

Esse código TEORICAMENTE imprimiria o valor 1

se alguém não concorda comigo pode dizer… E já aproveita para explicar …

obs.: ele vai imprimir 1, 3, 4.

por que teoricamente 1?

nao tem break no case do 1… ele imprime 1 e continua nos outros cases imprimindo 2 também… como tem break no 2… ele para… portanto a resposta é 1 e 2

Giulliano
int i, j=1;   
		    i = (j>1)?5:1;       
		switch(i) {   
		       case 0: System.out.println(0);   
		       case 1: System.out.println(1);   
		       case 2: System.out.println(2);   
		       case 3: System.out.println(3); break;   
		       default : System.out.println(4);   
		          }  

	}

Pq ele imprimir nesse caso q eu colcoquei agora os valores 1, 2 ,3.

Aí vc disse q é pq não tem break. Perfeito. Acontece que ele NUNCA DEVERIA ter impresso qualquer outro valor que não fosse validado no case.

case 1 é verdadeiro

case 2 é falso…pura lógica cara ele nunca deveria imprimir outra coisa a não ser "1".

ou então, já que, o case é furado ele deveria imprimir tudo até achar um break ??

CarlosEduardoDantas
Giulliano:
int i, j=1;   
		    i = (j>1)?5:1;       
		switch(i) {   
		       case 0: System.out.println(0);   
		       case 1: System.out.println(1);   
		       case 2: System.out.println(2);   
		       case 3: System.out.println(3); break;   
		       default : System.out.println(4);   
		          }  

	}

Pq ele imprimir nesse caso q eu colcoquei agora os valores 1, 2 ,3.

Aí vc disse q é pq não tem break. Perfeito. Acontece que ele NUNCA DEVERIA ter impresso qualquer outro valor que não fosse validado no case.

case 1 é verdadeiro

case 2 é falso....pura lógica cara ele nunca deveria imprimir outra coisa a não ser "1".

ou então, já que, o case é furado ele deveria imprimir tudo até achar um break ??

1 - agora vc trocou o case, entao imprime 1,2,3 :lol:

2 - switch-case embora tenha o intuito de substituir ifs-elses repetitivos, a lógica por detrás dele não é semelhante. Repare em primeiro lugar que as condições do case são constantes, de forma que ele avalia o bloco como um todo e não 1 a 1... prova disso que se tu colocar um default antes da instrução correta, não executa default.

Indo ao ponto... é obrigação do desenvolvedor colocar um break; para interromper a instrução case... quando achar a primeira correta.. continua executando código abaixo até achar um break ou até o case acabar.. isso é regra, nem tem o q discutir. Isso é regra do switch-case...

Giulliano

tudo bem vai…eu não sou nenhum especificador da SUN …mas pra mim fica claro q quem fez isso não foi muito feliz…um case deveria ser um IF e pra isso serve o switch para subustituir IFs encadeados…

mas fmz…

[/]'s

Criado 11 de outubro de 2007
Ultima resposta 11 de out. de 2007
Respostas 7
Participantes 3