Problemas com case if

7 respostas
fscpv

Boa tarde

Estou realizando uma operaçao no banco setando uma String em um textfiel com a tag prreciso salvar o valor com um numero em outra tabela e fix esse case com if mas nao esta dando certo

int priori = 0; if (ObjS.getPrioridade() == "Urgente") priori = 1; else if (ObjS.getPrioridade() == "Alta") priori = 2; else if (ObjS.getPrioridade() == "Media") priori = 3; else if (ObjS.getPrioridade() == "Baixa") priori = 4;

estou pegando ovalor do objeto e passando para uma variavel “priori” ao debugar vi que ele pega o valor setado no campo mas depois cai no cat falando sobre entruncamento de dados.

Des de já agradeço pela colaboração

7 Respostas

furutani

Na comparação de strings use equals

ObjS.getPrioridade().equals("Urgente")

Podemos melhorar o código pra evitar NullPointerException

"Urgente".equals(ObjS.getPrioridade())
berg.pb

bem, pelo que parece, vc tá querendo comparar com uma String.
então, se for isso, a comparação com string não é feita usando ‘==’, mas a função equals.

então:

//substitui onde tem == por equals.
if (ObjS.getPrioridade().equals("Urgente")) {...}

abraços

fscpv

Obrigado amigo mas eu preciso pegar o inteiro para dar o insert no banco , rs! mais muito obrigado!
relacionado com a prioridade.

bruno.leite

Prezado,

Está meio dificil de entender seu problema, mas olhando seu código, já adianto que para comparar String, usa-se o método equals e não ==, tipo ObjS.getPrioridade().equals(“Alta”).
Seu código está meio bagunçado, tende expor melhor o problema melhorando o código completo e mostrando o stack trace.

[]'s

ViniGodoy

Outra opção é declarar, no início de sua classe, uma constante que na verdade é um mapa do nome para o valor:

public static final Map<String, Integer> prioridades;

static {
   Map<String, Integer> map = new HashMap<String, Integer>();
   map.put("Urgente", 1);
   map.put("Alta", 2);
   map.put("Media", 3);
   map.put("Baixa", 4);
   prioridades = Collections.unmodifiableMap(map);
}
E depois em seu método só fazer:
int priori = prioridades.get(ObjS.getPrioridade());

Isso evita o if gigante e torna mais fácil de adicionar novas prioridades no futuro. Você poderia ainda carregar esse mapa de um arquivo ou xml, se necessário.

fscpv

Obrigado mais um vez na verdade eu tenho uma tabela no banco bdprioridade que tem dois campos o de idprioridade que é do tipo inteiro e o status que do tipo String, eu seto o status em string por ex: urgente que tem o int valor 1 eu tenho que passar esse valor para outratabela como int e isso que nao está ocorrendo, rs!

fscpv

Vini gostaria de agradecer pois a solução foi show! Ainda estou com um outro problema mas que já estava ocorendo antes desta alteração que é:

INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/intranet] has already been started SQLException:Column count doesn't match value count at row 1 SQLState:21S01 VendorError:1136

Agradeço a todos tbm muito obrigado e continuo aguardando o help de voces, =D

Criado 26 de abril de 2010
Ultima resposta 26 de abr. de 2010
Respostas 7
Participantes 5