Questao de controle de fluxo  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
elvishr
JavaChild
[Avatar]

Membro desde: 01/04/2003 00:47:21
Mensagens: 117
Localização: Brasília/DF
Offline



Qual sera a saida para o codigo? sendo executado: java TesteSwitch 10

a. 50
b. 100
c. 150
d. nenhum
e. 150 nenhum
f. erro de compilacao

Elvis não morreu
SCJP 1.4
SCWCD 5.0
SCBCD 5.0
JBCAA
[ICQ]
fredfrigieri
What is classpath?
[Avatar]

Membro desde: 24/05/2004 10:14:46
Mensagens: 8
Offline

Vai gerar um erro de compilação.
Eu acho que deve ser pelo fato de não poder colocar uma variavel no Case.

estou certo disto?


public class TesteSwitch {

static int z = 150;
static byte x = (byte) z;

static public void main(String args[]) {

if (args.length > 1)
x = 100;

z = 50;

switch (x) {

case (byte) z:
System.out.println("50");
break;
case (byte) 100:
System.out.println("100");
break;
case (int) (byte) 150: {
System.out.print("1");
System.out.print("50 ");
}
default:
System.out.println("nenhum");
}
}
}[/code]

Qual sera a saida para o codigo? sendo executado: java TesteSwitch 10

a. 50
b. 100
c. 150
d. nenhum
e. 150 nenhum
f. erro de compilacao
[Email]
Rominhof
Debugger

Membro desde: 24/03/2004 08:11:07
Mensagens: 56
Offline

Acho q nenhum
[MSN]
cecaldas
Java Ninja

Membro desde: 01/03/2004 13:17:19
Mensagens: 264
Offline

Vai gerar um erro de compilação.
Eu acho que deve ser pelo fato de não poder colocar uma variavel no Case.


Tu podes colocar uma variável no case desde que ela tenha sido declarada como uma constante.

Eu acredito que dê erro de compuilação
Hempx
JavaEvangelist
[Avatar]

Membro desde: 18/04/2003 03:42:08
Mensagens: 356
Localização: Belo Horizonte
Offline



eu acho que o erro estaria aqui tbm...
[MSN] [ICQ]
code
JavaChild
[Avatar]

Membro desde: 07/07/2004 09:04:58
Mensagens: 106
Localização: São Paulo
Offline

cecaldas wrote:Tu podes colocar uma variável no case desde que ela tenha sido declarada como uma constante.

Ficou meio estranha essa frase... Pq se vc declarar uma variável como constante ela não será mais variável.....

Mas o erro de compilação é esse mesmo, só pode colocar no case uma constante.

Agora se jogar um final lá na declaração.... tb vai dar erro..... pq o ficará igual ao e não pode ter dois cases iguais....

The Code Blood

<!-- Keep Coding -->
[Email]
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

Na verdade o que ocorre é um erro na compilação do código.
Uma vez que o switch - case não aceita variável como comparação , logo declarando z como constante final, você está marcando aquela literal no caso o valor 150 como z, isso só diz que 150 tem um nome, então
Código wrote: case (int) (byte) 150:

teria uma ambiguidade de nomes, na verdade teriamos uma duplicacao de comparacao no switch - case, é como se estivessemos escrevendo:

Código wrote:
switch (x) {

case 10:
System.out.println("10");
break;
case 10:
System.out.println("10 duplicado?");
break;
default:
System.out.println("nenhum");
}



Lembrando que switch - case só aceita comparação de literais inteiras e de chars....

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team