Impossivel comutar em um valor do tipo String

11 respostas
olivercld
Boa noite, bom o erro que da na linha so switch e ete qu especifiquei no tópico que diz: Impossivel comutar em um valor do tipo String. Apenas valores int ou constantes são permitidos. abaixo código que estava mechendo:
String tecnologia = "java";

		switch(tecnologia){
		case "java":
		case "c++":
		case "c#":
			System.out.println("Linguagem de Programação ");
			break;
		case "postgre":
		case "MySQL":
		case "Oracle":
			System.out.println("Banco de Dados ");
			break;
		default:
			System.out.println("Tecnologia Desconhecida ");
		}
	}
Porque ocorre isso, se no exemplo que estou vendo seguindo a pessoa faz dessa mesma forma que sigo e não dá erros ?

11 Respostas

carlos.e.a

1 segundo de pesquisa + 0,14 segundos da resposta do servidor do google:

BrunoFurtado

Cara,
Parece que o Java 1.7 já inclui a possibilidade de comparações com String no switch.

Verifique qual a versão do java que vc está utilizando…
No terminal ou prompt, digite “java -version”
As versões inferiores a 1.7 não permitem…

olivercld

BrunoFurtado versão do java aqui é 1.6.

carlos.e.a vi o pessoal falando de Enum, como utilizar ele, seria assim

Enum<Enum<E>> tecnologia = "java";
BrunoFurtado

Cara,

Qual o objetivo de utilizar o switch? Pq não utiliza else if?

Fexx

A respeito do enum, vc pode segui essa pagina da oracle com um tutorial.
http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

Ou essa:

http://www.tiexpert.net/programacao/java/enum.php

olivercld

Qual objetivo bom BrunoFurtado e um curso da xti que o brother Fexx me indicou, e eu estava seguindo e la mostra como se fazer com case, masi eu poderia fazer com if else sim, no caso valeu porque mais uma que vi que não dá para usar string com switch at´a versao 1.7, e vi mais uma que ate então nao tinha visto que e o enum.
grato pelas respostas

olivercld

Bem explicado o tutorial Fexx sobre enum, foi bom saber um pouco sobre enum, mais aqui vendo que o Ricardo fala na aula foge um pouco do que estava falando e fazendo, mais foi bom fico grato.

vi este exemplo: http://www.tiexpert.net/programacao/java/enum.php e tambem vi que fala que o enumnão temcomo instanciar.

carlos.e.a

[quote=olivercld]BrunoFurtado versão do java aqui é 1.6.

carlos.e.a vi o pessoal falando de Enum, como utilizar ele, seria assim

Enum<Enum<E>> tecnologia = "java";

É voce pode declarar uma classe interna enum. Se for so pra fazer um switch nao acho que va valer a pena. Nesse caso seria melhor usar um if mesmo. O enum nesse caso serviria mesmo só pra questao de legibilidade do codigo.

Fexx

Conhecimento nunca é demais xD

marcelohd02

Voce vai criar um ENUM ?,
enquanto nao usa JAVA7 faz esse trem usando int usando aquele menuzinho antigo do 1 - java | 2 - C# e assim por diante. resolve bem o seu problema.

olivercld

É voce pode declarar uma classe interna enum. Se for so pra fazer um switch nao acho que va valer a pena. Nesse caso seria melhor usar um if mesmo. O enum nesse caso serviria mesmo só pra questao de legibilidade do codigo.
ok entendido carlos.e.a .

Conhecimento nunca é demais xD
concordo contigo Fexx vc é fera.

Voce vai criar um ENUM ?,
enquanto nao usa JAVA7 faz esse trem usando int usando aquele menuzinho antigo do 1 - java | 2 - C# e assim por diante. resolve bem o seu problema.
foi o que resolvi fazer Sr. marcelohd02.

Obrigado gente até breve.

Criado 23 de janeiro de 2012
Ultima resposta 24 de jan. de 2012
Respostas 11
Participantes 5