Switch

1 resposta
C

Boa Noite Prezados,

Estou tendo uma certa dificuldade, para a criação de um método de seleção…

Segue codigo:

protected static String megaCode(int unidade) {
		String mega = null;

		switch (unidade) {
		case 	0468	:mega = ("91000H0468");break;
		case 	0469	:mega = ("91000H0469");break;
		case 	0470	:mega = ("01964H0470");break;
		case 	0472	:mega = ("01964H0472");break;
                default: System.out.println("Erro");
		}
		return mega;
	}

Quando compilo, o projeto apresenta a mensagem:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	The literal Octal 0468 (digit 8) of type int is out of range

O que quer dizer esta mensagem?

Agradeço a todos.

1 Resposta

leoramos

Cara, é o seguinte:
os ‘case’ do switch usam impreterivelmente inteiros como item de comparação.
Mas tem um porém: o tipo ‘int’ pode ser interpretado de três maneiras:

int variavel = 10; //interpretado como sistema numérico decimal int variavel = 010; //interpretado como sistema numérico octal (SEU CASO) int variavel = 0x10; //interpretado como sistema numérico hexadecimal

No seu caso, ou seja, como o zero na frente do número, ele está comparando sendo este número um OCTAL, que tem como intervalo de algarismos válidos do 0 (zero) até o 7; ou seja, o 8, que inclusive está indicado no erro, não pode constar como algarismo de nenhum dos teus números.

Verifique se é octal mesmo que desejas, senão, tire os zeros da frente dos números, que daí funciona =)

Abraço!

Criado 28 de julho de 2008
Ultima resposta 28 de jul. de 2008
Respostas 1
Participantes 2